C++ -- 面向对象之继承

本文详细介绍了C++中的继承概念,包括继承的定义、三种继承关系(public, protected, private)及其与访问限定符的关系。解释了如何定义不可继承的类,讨论了父类与子类的赋值兼容规则,并探讨了单继承和多继承。最后,重点讲解了菱形继承的问题,如二义性和数据冗余,以及如何通过虚继承来解决这些问题。" 90515531,7554580,Win10 Docker安装Scrapy-Splash的踩坑记录,"['Docker', 'Python', '爬虫', 'Scrapy', 'Splash']
摘要由CSDN通过智能技术生成

一.继承的概念

1.继承的定义:继承是一种复用手段,通过继承关系,子类可以从父类获得一些成员变量或成员函数,共享公有的东西,实现各自本质不同的东西。

2.继承的书写:在子类的类名后面加上":"再加上继承关系,再加上父类的名字。

class Person
{
private:
      string _name;
};

class Student : public Person   //Student类继承了父类Person
{
public:
      int _stunum;
};

3.如果子类继承了父类,则父类的成员(成员变量或成员函数)都会(不管是公有、私有还是保护的成员)都会变成子类的一部分,但是私有的是不可见(不可见不是在子类中不存在,而是在子类中不能访问这些成员)。

例如,对于上面的继承关系,我们定义一个子类对象 Student s;

则监视窗口如下:

可以看到父类Person类的私有数据成员_name也被继承下来了,但是不能在Student类里访问这个私有成员(并且我们也不能通过Person类的对象访问该数据成员,因为其访问限定符是私有的)。

二.三种继承关系与三种类成员访问限定符

1.三种继承关系

①public继承  ②protected继承  ③private继承

2.三种类成员访问限定符

(1)我们知道C++类里面的访问限定符有3种,分别是public、private、protected;

(2)如果访问限定符为public则在类外可以通过对象来访问;如果访问限定符为private或protected,则在类外不可访问。

(3)访问限定符直接决定了能否在类外访问该成员。

3.三种继承关系与三种访问限定符有什么样的关系?

(1)如果父类成员的访问属性为private,则无论是何种继承方式,父类成员在子类都不可见。(不可见不是在子类中不存在,而是在子类中不能访问这些成员)。

(2)当父类成员的访问属性不是private时:

①对于public继承:父类所有成员在子类的访问属性都不变;(如果父类成员的访问属性是公有则在子类里面的访问属性也是公有,如果父类成员的访问属性是保护则在子类里面的访问属性也是保护)

②对于protected继承:父类所有的成员在子类的访问属性都变为protected;(不论父类的成员访问限定符是public还是protected,父类成员在子类访问属性都是protected)

③对于private继承:父类所有的成员在子类的访问属性都变为private。(不论父类的成员访问限定符是public还是protected,父类成员在子类访问属性都是private)

4.面试题:如何定义一个不能被继

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值