先看看有显式初始化列表的例子:
#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;
}
看看结果是什么:
看到不同了吗?嘿嘿,讨论一下吧