首页 > 编程语言 > 详细

c++的继承

时间:2021-04-17 20:18:34      阅读:20      评论:0      收藏:0      [点我收藏+]
  1. 单继承

继承包括公有继承(public),保护继承(protected)和私有继承(private),不同的继承方式,子类对父类都有不同的访问权限.

继承一般形式:

Class<子类名>:<继承方式><父类名>  //继承方式:public(表示公有继承),private(私有继承),protected(保护继承)

{

public:

<公有数据和函数>

protected:

<保护数据和函数>

Private:

<私有数据和函数>

};

Ps:父类中的私有函数和数据不可被子类访问.

(1) 公有继承:

公有继承中,子类成员可以访问基类中的公有和保护成员与函数,在类外可以对应访问子类中公有的成员函数.

(2) 保护继承:

基类中除私有成员外,继承到子类中都将变为保护的数据和函数,在类外将不可被访问.

(3) 私有继承:

私有继承中私有成员外,继承到子类中都将变为私有的数据和函数,在类外将不可被访问.

2.多继承

单继承可以看做是多继承的一个特例,多继承可以看做是单继承的一个组合

代码的一般形式:

Class<父类名>:<继承方式><子类名1>,...<继承方式><子类名n>

{

定义子类直接的成员;

};

二义性:

class baseclass1

{

public:

Void seta(int x){a=x}

void show()

{cout<<a;}

};

Class baseclass2

{

public:

void seta(int x){b=x}

 

void show()

{cout<<b;}

}

Class deriveclass:public baseclass1,public baseclass2

{

};

int main()

{

deriveclass obj;

obj.seta(2);

Obj.show(); //出现二义性

obj.setb(6);

Obj.show();  //出现二义性

}

出现类似上述情况,代码不能编译.

解决方法:

在调用相应函数时在前面加上作用域运算符

:
obj.classbase1::show();

或在deriveclass类中定义新的函数:

Void deriveclass::show()

{

baseclass1::show();

Baseclass2::show();

}

c++的继承

原文:https://www.cnblogs.com/zxy20020103/p/14671807.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!