有无显式初始化列表对构造函数跟析构函数的影响
有无显式初始化列表对构造函数和析构函数的影响
先看看有显式初始化列表的例子:
#include <iostream> using namespace std; class A { public: A(){cout << "A" << endl;} ~A(){cout << "~A" << endl;} }; class B:public A { public: B(A& a):_a(a) { cout << "B" << endl; } ~B() { cout << "~B" << endl; } private: A _a; }; int main() { A a; B b(a); return 0; }看看结果是什么?
在看看未显式初始化的例子:
#include <iostream> using namespace std; class A { public: A(){cout << "A" << endl;} ~A(){cout << "~A" << endl;} }; class B:public A { public: B(A& a) { _a = a; cout << "B" << endl; } ~B() { cout << "~B" << endl; } private: A _a; }; int main() { A a; B b(a); return 0; }看看结果是什么:
看到不同了吗?嘿嘿,讨论一下吧