C++三种继承方式

一、三种继承方式

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

 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的。

时间: 2024-10-11 05:15:27

C++三种继承方式的相关文章

js的三种继承方式及其优缺点

第一种,prototype的方式: //父类 function person(){ this.hair = 'black'; this.eye = 'black'; this.skin = 'yellow'; this.view = function(){ return this.hair + ',' + this.eye + ',' + this.skin; } } //子类 function man(){ this.feature = ['beard','strong']; } man.pr

C++的三种访问权限与三种继承方式

三种访问权限 我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是public.protected.private.要理解它们其实也很容易,看下面了一个例子. 父类: class Person { public: Person(const string& name, int age) : m_name(name), m_age(age) { } void ShowInfo() { cout << "姓名:" << m_name <&l

三种继承方式和三种访问权限

 也就是说子类只能访问父类的保护和公有成员,而对象只能访问公有成员. 继承方式 1. 三种继承方式不影响子类对父类的访问权限,子类对父类只看父类的访问控制权.     2. 继承方式是为了控制子类(也称派生类)的调用方(也叫用户)对父类(也称基类)的访问权限. 3. public.protected.private三种继承方式,相当于把父类的public访问权限在子类中变成了对应的权限. 如protected继承,把父类中的public成员在本类中变成了protected的访问控制权限:priv

C++中的三种继承方式

1,被忽略的细节: 1,冒号( :)表示继承关系,Parent 表示被继承的类,public 的意义是什么? 1 class Parent 2 { 3 4 }; 5 6 class Child : public Parent 7 { 8 9 }; 2,有趣的问题: 1,是否可以将继承语句中的 public 换成 protected 或者 private?如果可以,与 public 继承有什么区别? 3,有趣的尝试编程实验: 1 #include <iostream> 2 #include &l

C++中三种继承方式的区别

本文来自https://zhidao.baidu.com/question/159111767.html  详细说明了三种继承方式的区别,好文 还可参考另一篇文章: https://blog.csdn.net/one_super_dreamer/article/details/81611118 https://blog.csdn.net/u011857683/article/details/82120998 public公有继承 protected保护继承 private私有继承 我们知道类的p

C++中的类继承(1) 三种继承方式

继承是使代码可以复用的重要手段,也是面向对象程序设计的核心思想之一.简单的说,继承是指一个对象直接使用另一对象的属性和方法.继承呈现了 面向对象程序设 计的层次结构, 体现了 由简单到复杂的认知过程.C++中的继承关系就好比现实生活中的父子关系,继承一笔财产比白手起家要容易得多,原始类称为基类,继承类称为子类,它们是类似于父亲和儿子的关系,所以也分别叫父类和子类.继承的方式有三种分别为公有继承(public),保护继承(protect),私有继承(private).定义格式如下: 1. 公有继承

子类继承基类的三种继承方式

在C++中,子类继承父类有三种继承方式,分别是:public, protected和private.子类继承的方式不同,那么子类对象访问父类中的参数访问权限也不同. public 方式继承:基类的private成员派生类不可见,基类中的protected和public成员在派生类中可以直接使用,并且变成了派生类中相应                        的protected成员和public成员,但是只有public成员可以在派生类外使用. protected 方式继承:基类的priv

三种继承方式

1.公有继承 基类的public成员被继承到派生类的public访问限定符下,基类的protected成员被继承到派生类 的protected访问限定符下,而基类的private成员被继承到派生类的不可见位置,无法直接访问. 2.保护继承 基类的protected成员和public成员都被继承到派生类的protected访问限定符下,而private成员 被继承到不可见位置,无法直接访问. 3.私有继承 基类的public成员和protected成员都被继承到派生类的private访问限定符下,

C++面向对象中的三种继承方式

公有继承 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问. 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能通过直接访问基类的private成员. 通过派生类的对象只能访问基类的public成员. 私有继承 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问. 派生类中的成员函数可以直接访问基类中的public和protected成