private继承与public继承

来源:互联网 发布:macbook air推荐软件 编辑:程序博客网 时间:2024/05/17 07:52

1 private, public, protected 访问标号的访问范围

private:

能够访问:1.该类中的函数;2.友元函数。
不能访问:1.public继承的子类和private继承子类;2.该类的对象。

protected:

能够访问:1.该类中的函数;2.public继承的子类和private继承子类;3.友元函数。
不能访问:1.该类的对象。

public:

能够访问:1.该类中的函数;2.public继承的子类和private继承子类;3.友元函数;4.该类的对象。

注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。

2 类被继承后方法属性变化

使用private继承,父类的protected和public属性在子类中变为private;
使用protected继承,父类的protected和public属性在子类中变为protected;
使用public继承, 父类的protected和public属性不发生改变;

3 private继承和public继承的适用情况

C++将public继承视为is-a关系。private继承意味着implemented-in-terms-of(根据某物实现出)。private继承意味着只有实现部分被继承,接口部分被略去。意思是子类采用了父类已经备妥的特性,但是子类和父类之间不会产生任何观念上的联系。private继承在软件设计层面上没有意义,其意义只在于软件实现层面。

private继承:

1)编译器不会自动将一个子类对象转换为一个父类对象,而public继承会;

2)子类中由父类继承而来的成员(protected和public)都变为private。

implemented-in-terms-of也可以由复合实现。在应用域,复合意味着has-a;在实现域,复合意味着is-implemented-in-terms-of。尽可能使用复合实现这种关系,必要时(涉及protected成员或virtual函数时)才使用private继承


0 0
原创粉丝点击