您的位置:首页 > 其它

私有继承的一个例子,帮助加强理解

2012-03-10 11:09 253 查看
B私有继承A 是指,B is-implement-terms-of A, B是根据A实现的。
#include <iostream>
using namespace std;
class A{
public:
A():_a(0){cout << "default constructor A..." << _a << endl;}
A(int a):_a(a){cout << "assignment constructor..." << _a << endl;}
~A(){cout << "destruct A..." << _a << endl;}
void display(ostream& os = cout){os << _a << endl;}//默认输出流为cout
private:
int _a;
};
class B:private A{//私有继承后public->private,private->不可见
public:
void disp(){display();}//A::_a = 10;不会通过
B():A(10),_b(1){cout << "default constructor B..." << _b << endl;}
//默认情况下先调用A的默认构造函数,但是我们可以显示指定B的构造函数只调用A的赋值构造函数
~B(){cout << "destructor B..." << _b << endl;}
private:
int _b;
};
int main(){
A a;//调用默认构造函数
B b; //先调用A的构造函数,再调用B的
b.disp();//私有继承后A::display()成为B的私有成员函数,通过开辟一个公有函数间接调用
}
运行结果:

default constructor A...0

assignment constructor...10

default constructor B...1

10

destructor B...1

destruct A...10

destruct A...0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: