C++继承相关知识

本文介绍了C++中的继承特性,包括public、protected和private继承的区别。在public继承中,子类可以访问基类的public和protected成员;protected继承时,基类的public和protected成员在子类中变为protected;而private继承时,这些成员变为private。此外,还讨论了构造函数和析构函数的调用顺序,以及多级继承的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++类的成员有publicprotected以及private三种属性;

C++类的对象只可以访问类的public对象;

对于protected,该属性在类的实例对象中与private表现一致,但在继承中则不同。

 

假设A是基类:

1public 继承

class B: public A{}; 则类B继承了A的所有属性和函数,但是类B只能直接访问Apublic protected成员,A类的publicprotected,在B类中不变

class B: public A{}; A 中有属性a1B中重定义了a1,则B.a1覆盖A.a1

class C: public B{}; 时,C中的a1B.a1;

2protected继承

class B: protected A{};则类B继承了A的所有属性和函数,类B只能直接访问Apublic protected成员,但是A中的publicprotectedB中均变为protected

 

3private继承

class B: protected A{};则类B继承了A的所有属性和函数,类B只能直接访问Apublic protected成员,但是A中的publicprotectedB中均变为private

 

4、多级继承,依次类推

 

5、在申明一个类的对象时,构造函数的调用顺序是:从基类到子类,析构函数的调用顺序是:从子类到基类;

class B: public A{};

   classC: public B{};

   Cinstance;

该段程序的构造函数调用顺序:A->B->C;

析构函数调用顺序:C->B->A.

 

示例如下:

#include<iostream>

using namespace std;

class A{

public:

         inta1;

protected:

         inta2;

private:

         inta3;

public:

         A(){

                   a1= 1;

                   a2= 2;

                   a3= 3;

                   cout<< a3 << endl;

         }

         ~A(){cout << "~A" << endl; };

};

class B :protected A

{

public:

         inta1=45;

         B(){

                   cout<< a1 <<" B "<< a2 << endl;

         };

         ~B(){cout << "~B" << endl; };

};

class C :public B

{

public:

         //inta1;

         C(){

                   cout<< a1 <<" C "<< a2 << endl;

         };

         ~C(){cout << "~C" << endl; };

};

int main()

{

         Cb;

         //Aa;

   //cout << b << endl;

         getchar();

         return0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值