缘由:C++ 为了确保销毁成员的顺序是惟一的,要求初始化成员的顺序也惟一。那根据什么顺序去初始化呢,就根据成员变量在类中定义的顺序。ide
缘由:若是不这么作,会对成员变量调用默认构造函数,而后在初始化的时候,再次调用赋值操做。但这两个步骤,能够经过初始化中直接调用成员的赋值构造函数一步实现。函数
由于: 在派生对象的成员尚未被初始化的时候就调用其成员函数极可能产生意想不到的混乱。在基类的构造期间,没有办法说清楚到底基本是一个独立的对象仍是其余派生类的基类部分。指针
由于:
若是须要经过基类指针直接析构派生类对象:派生类就须要动态地继承基类的析构函数,这就要求须要把基类的析构函数设置为公共的、虚拟的。对象
若是不须要经过基类指针直接析构派生类对象:那基类的析构函数不须要被子类调用,于是能够设置为保护的、非虚拟的。继承