子类的构造函数ins and outs
class Fa{
}
class Son : Fa{
string a, b;
Son(){
}
}
我们知道, Son(){}
其实会变成: Son() : Fa(), a(), b(){}
此时, 我们对 (初始化列表) 再次深入, 以下是伪代码
Son{
Fa::Fa(); ' 父类构造 '
try{
' 对象的初始化, 即申请内存, 可能会失败 '
a.string(); ' 伪代码, 表示对a的初始化 '
}
catch(...){
' 说明, a构造失败 '
Fa::~Fa(); ' 回溯, 对Fa父类的析构 '
throw; ' 传播异常 '
}
try{
b.string();
}
catch(...){
' 说明, b构造失败 '
a.~string(); ' 回溯, 对a的析构 '
Fa::~Fa(); ' 回溯, 对Fa父类的析构 '
throw; ' 传播异常 '