您的位置:首页 > 编程语言 > C语言/C++

Effective C++ 条款9 决不在构造和析构过程后调用虚函数

2015-08-22 15:04 281 查看
1. 在一个继承体系中,最底层的派生类在构造过程中,先初始化基类部分,再按继承层次依次初始化派生类部分,因此被构造的对象先作为一个基类对象,再按继承层次依次成为派生类对象,例如,在继承层次A→B→C→D中,构造一个D类对象,其依次经历了A→B→C→D的转变,因此对于以下代码:

class A{
public:
void foo(){ cout << "A" << endl; }
A(char ch='a'){ if(ch=='a') foo(); }
};
class B :public A{
public:
void foo(){ cout << "B" << endl; }
B(char ch = 'b') :A(ch){ if (ch == 'b') foo(); }
};
class C :public B{
public:
void foo(){ cout << "C" << endl; }
C(char ch = 'c') :B(ch){ if (ch == 'c') foo(); }
};
class D :public C{
public:
void foo(){ cout << "D" << endl; }
D():C('d'){ foo(); }
};


View Code
这样就可以确保调用合适的构造函数.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: