C++第三十一弹---C++继承机制深度剖析
#include <iostream>
class Base {
public:
Base() : _base(0) { std::cout << "Base constructor called\n"; }
virtual ~Base() { std::cout << "Base destructor called\n"; }
virtual void Show() const { std::cout << "Base Show: " << _base << '\n'; }
protected:
int _base;
};
class Derived : public Base {
public:
Derived() : Base(), _derived(0) { std::cout << "Derived constructor called\n"; }
~Derived() override { std::cout << "Derived destructor called\n"; }
void Show() const override { std::cout << "Derived Show: " << _base << ',' << _derived << '\n'; }
protected:
int _derived;
};
int main() {
Base* ptr = new Derived();
ptr->Show();
delete ptr;
return 0;
}
这段代码首先定义了一个基类Base
和一个派生类Derived
。在Derived
的构造函数中调用了Base
的构造函数以初始化基类部分。在Derived
的Show
函数中,我们打印了基类和派生类的成员变量。在main
函数中,我们创建了一个Derived
类型的对象,并用一个指向基类Base
的指针指向它。我们调用ptr->Show()
来展示派生类的行为,然后删除指针,触发析构函数。这个例子展示了如何正确地使用继承和多态,以及析构函数的重要性。
评论已关闭