继承有几种方式?每种方式的派生类对基类成员的继承性如何?
时间: 2024-05-25 11:11:35 浏览: 91
在C++中,继承有以下几种方式:
1. 公有继承(public inheritance):派生类从基类继承的成员在派生类中的访问属性和基类中的访问属性相同。在公有继承中,基类中所有的公有成员在派生类中都是公有的,所有的保护成员在派生类中都是保护的,私有成员在派生类中是不可见的。
2. 保护继承(protected inheritance):派生类从基类继承的成员在派生类中的访问属性为保护成员。在保护继承中,基类中所有的公有成员在派生类中都是保护的,所有的保护成员在派生类中都是保护的,私有成员在派生类中是不可见的。
3. 私有继承(private inheritance):派生类从基类继承的成员在派生类中的访问属性为私有成员。在私有继承中,基类中所有的公有成员在派生类中都是私有的,所有的保护成员在派生类中也都是私有的,私有成员在派生类中是不可见的。
对于基类中的成员,不同的继承方式对派生类中的访问属性有不同的限制。公有继承中,基类中的公有成员在派生类中仍然是公有的,保护成员在派生类中仍然是保护的,私有成员在派生类中不可见。保护继承中,基类中的公有和保护成员在派生类中都是保护的,私有成员在派生类中不可见。私有继承中,基类中的所有成员在派生类中都是私有的,即使是公有成员和保护成员也是私有的。
相关问题
1. 有哪几种继承方式?每种方式的派生类对基类成员的继承性如何
C++中有3种继承方式:
1.公有继承(public inheritance):基类的公有成员和保护成员都可以被派生类访问和继承,私有成员不能被继承。
2.私有继承(private inheritance):基类的公有成员和保护成员都可以被派生类访问和继承,但它们在派生类中都变成了私有成员,私有成员不能被继承。
3.保护继承(protected inheritance):基类的公有成员和保护成员都可以被派生类访问和继承,但它们在派生类中都变成了保护成员,私有成员不能被继承。
总的来说,公有继承是最常用的继承方式,因为它能够保留基类的接口,同时也能够利用基类的实现。私有继承和保护继承用得比较少,一般只用于特殊的情况下。
在继承的过程中,派生类会自动继承基类的公有成员和保护成员。对于基类的私有成员,它们不能被派生类继承,但是可以通过基类的公有成员和保护成员来访问和使用。在不同的继承方式下,基类成员对派生类的可见性不同,具体如下:
- 公有继承:基类的公有成员和保护成员在派生类中都可以被访问和继承。
- 私有继承:基类的公有成员和保护成员在派生类中都可以被访问和继承,但是它们变成了派生类的私有成员,只能在派生类内部访问。
- 保护继承:基类的公有成员和保护成员在派生类中都可以被访问和继承,但是它们变成了派生类的保护成员,只能在派生类及其派生类的成员函数中访问。
c++每种继承方式的派生类对基类成员的继承性如何
C++中有三种继承方式:public、private和protected。它们对基类成员的继承性如下:
1. public继承:基类的public成员在派生类中仍为public成员;基类的protected成员在派生类中仍为protected成员;基类的private成员不能被派生类访问。
2. protected继承:基类的public和protected成员在派生类中都变为protected成员;基类的private成员不能被派生类访问。
3. private继承:基类的public和protected成员在派生类中都变为private成员;基类的private成员不能被派生类访问。
需要注意的是,无论使用哪种继承方式,基类的构造函数和析构函数都不会被继承,需要在派生类中自行调用。
阅读全文