代码改变世界

c++ primer 学习杂记1

2013-07-25 11:26  清心朗静  阅读(264)  评论(0编辑  收藏  举报

读到p483 公有,私有,受保护的继承。

1、关于基类成员在派生类中的访问级别:

1) 无论何种继承方式, 派生类都无法访问基类中的private成员。

2) 派生类可以限制,而不能放松对所继承成员的访问。

3)public inheritance, 基类成员保持自己的访问级别。(基类中的public成员为派生类的public成员,基类的protected成员为派生类的protected成员。

4)protected inheritance, 基类成员的public,protected成员在派生类中为protected成员。

5)private inheritance, 基类的所有成员在派生类中为private成员。

2、struct,class保留字定义类时的唯一不同:

默认的成员保护级别, 默认的派生保护级别不同。struct: 均为public; class: 均为private

struct S_Base {  

    int foo(int) { return 0; }  

    int val;  

};  

class C_Base {  

    int foo(int) { return 0; }  

    int val;  

};  

  

等同于:

struct S_Base {  

public:  

    int foo(int) { return 0; }  

    int val;  

};  

class C_Base {  

private:  

    int foo(int) { return 0; }  

    int val;  

};  


 默认的派生(继承)保护级别:

struct S_Derived : S_Base {  

};   

class C_Derived : C_Base {  

};  

 等同于:

struct S_Derived : public S_Base {  

};  

class C_Derived : private C_Base {  

};  


3、接口继承和实现继承

primer中的解释:

public派生类继承基类的接口,它具有与基类相同的接口。

使用private,protected派生的类不继承基类的接口,相反,这些派生通常被称为实现继承。派生类在实现中使用被继承类但继承基类的部分并未称为其接口的一部分。

 

其他参考:

http://blog.csdn.net/njnu_mjn/article/details/7742460