ad

《C++程序开发案例课堂》_了解C++的更好途径_13.1 继承的基本概念

admin 144 2023-11-01

【摘要】 本书摘自《C++程序开发案例课堂》一书中第13章,第1节,由刘春茂、李琪编著。

13.1 继承的基本概念

C++ 是支持面向对象编程的语言,通过子类继承父类这种方式来实现继承。下面详细介 绍C++ 中继承的使用方法和技巧。

《C++程序开发案例课堂》_了解C++的更好途径_13.1 继承的基本概念

13.1.1 基类和继承类

在 C++ 语言中, 一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类 派生的继承称为单继承;从多个基类派生的继承称为多继承。

单继承的定义如下:

多继承的定义如下:

大家可能看到在上例中, public 和 private 不能很好地理解其含义。下面就详细地讲讲这

几个关键字的含义。

派生类共有3 种 C++ 类继承方式:公有继承(public)、 私有继承(private)和保护继承 (protected)。

1.公有继承

公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的 状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。

2.私有继承

私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这 个派生类的子类所访问。

3. 保护继承

保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能 被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。

在3种不同的继承方式中,继承类对基类的成员访问权限有所不同,下面利用表13-1 来 阐述这个问题。

通过表13-1 可以看出来,公有继承中,继承类的对象可以访问基类中的公有成员;派生 类的成员函数可以访问基类中的公有成员和保护成员;在私有继承中,基类的成员只能由直 接派生类访问,而无法再往下继承;而保护继承与私有继承相似,两者的区别仅在于对派生 类的成员而言,对基类成员有不同的可见性。

继承方式是可选的,默认为 private(私有的)。

13.1.2 简单的基础实例

下面对每种方式进行举例说明,以加深读者对这3种方式的理解。

1.公有继承

【例13-1】公有继承(代码13-1.txt)。

新建名为 gjctest 的 C++Source File 源程序。源代码如下:

#include #include

using namespace std;

class CBase {

string name;

int age;

public:

string getName(){

return name;

int getAge()

return age;

protected

void setName(string s){

name = s;

void setAge(int i){

);

class CDerive: public CBase { // 用public 指定公有继承

public:

void setBase(string s, int i){

setName(s); // 调用基类的保护成员

setAge(i); // 调用基类的保护成员

//调用基类的私有成员

//cout <

};

int main()

CDerive d;

d.setBase("abc",100);

//调用基类的私有成员

//cout<

//调用基类的公有成员

cout<< d.getName()<<" "< d.getAge()<< endl;

//调用基类的保护成员

//d.setName("xyz"); / / 编 译 出 错

//d.setAge(20); //编译出错

system("pause");

return 0;

【代码剖析】

首先,定义一个类 Cbase 的基类,在该类中定义了两个成员,分别是 name 和 age, 还定 义了两个public的函数和两个 protected 函数。使用公有继承的方式,定义了Cbase 类的继承 类 CDerive, 在该继承类中,调用了基类的保护成员和私有成员,但是在编译时,调用私有成 员出错,说明继承类不能直接访问基类的私有成员。在主函数中,声明了一个继承类的对 象,并且通过继承类分别调用了基类的私有成员、公有成员、保护成员。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《C++程序开发案例课堂》_了解C++的更好途径_9.1.3 结构体数组初始化
下一篇:《C++程序开发案例课堂》_了解C++的更好途径_10.2 认识类
相关文章

 发表评论

暂时没有评论,来抢沙发吧~