下面一个非常经典的例子学习继承类之间的调用关系
#include <iostream>
using namespace std;
class base {
public:
base(){
cout << "base()";
}
virtual ~base() {
cout << "~base";
}
};
class subs:public base{
public:
subs() {
cout << "subs()";
}
~subs() {
cout << "~subs()";
}
};
int main() {
base *b= new subs;
delete b;
return 0;
}
会输出base()subs()~subs()~base
1. 被继承的基类的析构函数一定是虚函数
2. 构造函数、析构函数都会被调用
下面的程也会输出同样的结果,这个就不知道为什么了
#include <iostream>
using namespace std;
class base {
public:
base(){
cout << "base()";
}
~base() {
cout << "~base";
}
};
class subs:public base{
public:
subs() {
cout << "subs()";
}
~subs() {
cout << "~subs()";
}
};
int main() {
subs b;
return 0;
}