c++的继承

  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();

}

posted @ 2021-04-17 19:03  zxyyyy  阅读(58)  评论(0)    收藏  举报