码迷,mamicode.com
首页 > 编程语言 > 详细

C++三种继承方式

时间:2016-05-15 15:16:42      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:

一、三种继承方式

继承方式不同,第一个不同是的是派生类继承基类后,各成员属性发生变化。第二个不同是派生类的对象能访问基类中哪些成员发生变化。表格中红色标注。

技术分享

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class A
 5 {
 6 private:
 7     int i;
 8 protected:
 9     int j;
10 public:
11     int k;
12 };
13 
14 class B:public A
15 {
16 
17 };
18 
19 int main()
20 {
21     B b;
22     b.k=1;
23 }

1、只有当B,public继承A的时候,才能b.k=1。因为只有当public继承的时候,派生类的对象才能访问基类中的public成员。如果private、protected继承,基类中的k属性会变成private、protected,无法被派生类的对象访问。

2、当B,public继承A的时候,b.i=1和b.j=1是错误的,因为派生类的对象只能访问基类中的public成员。

 

二、存储空间

技术分享

class B:private A

class B:protected A

class B:public A

都输出24。

 

三、《C++程序设计实习》摘录

技术分享

技术分享

这里,son f;f.nProtected=1;我在VS2012下测试通过,protected成员只是不能被其他函数访问。打个问号。

 

四、练习题

下面描述中,表达正确的有()

A公有继承是基类中的public成员在派生类中仍是public的

B公有继承是基类中的private成员在派生类中仍是private的

C公有继承是基类中的protected成员在派生类中仍是protected的

D私有继承是基类中的public成员在派生类中仍是private的

答案是ACD

B错误是因为基类中的private成员在派生类中是不可被访问的,所以也就谈不上是private的。

C++三种继承方式

标签:

原文地址:http://www.cnblogs.com/hslzju/p/5495162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!