c++继承笔记

本文详细介绍了C++中的继承概念,包括公有、保护和私有继承的特性,以及继承构造和析构的顺序。讨论了同名成员属性和函数的处理,特别是如何访问父类的同名成员。此外,还涵盖了多继承和菱形继承问题,特别是如何解决菱形继承中的资源冗余问题,通过虚继承实现正确继承。

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

目录

继承方式:

公有继承:

保护继承:

私有继承:

继承构造和析构顺序

构造顺序

析构顺序

同名成员处理

同名成员属性

同名成员函数

多继承

菱形继承


class 子类:继承方式 父类

class son : public base{};

继承方式:

公有继承:

class Son1 : public Base1{};

public,子类可以访问父类的public和protected,不能访问private。

子类继承父类的属性,原本的public 和 protected权限不变。

类外不能访问protected

保护继承:

class Son2 : protected Base1{};

父类中的公有成员到子类中变为 protected权限

父类中的protected成员到子类中变为 protected权限

私有继承:

class Son3 : private Base1{};

父类中的公有成员到子类中变为 private权限

父类中的protected成员到子类中变为 private权限

子类继承了父类所有非静态成员属性,私有属性只是不显示,实际继承了。

继承构造和析构顺序

构造顺序

先父类后子类

析构顺序

先子类后父类

同名成员处理

Son1 s1;

同名成员属性

子类对象访问子类成员  直接访问

cout<<s.m_A<<endl;

子类对象访问父类成员  加作用域

cout<<s.Base1::m_A<<endl;

同名成员函数

cout<<s.func()<<endl;

cout<<s.Base1::func()<<endl;

子类中出现与父类同名的成员函数,子类的同名成员会隐藏掉父类中所有同名成员函数

想访问父类中被隐藏的同名成员函数,加作用域

同名静态成员

子类对象可以直接访问子类

访问父类要加作用域

多继承

语法

class Son : public Base1,public Base2{};

父类有同名成员时,子类访问父类要加作用域

s.Base1::m_A;
s.Base2::m_A;

菱形继承

两个子类继承一个父类,又有一个子类继承这两个子类。如羊、驼继承动物类,羊驼继承羊、驼。

羊驼要同时继承两份数据,导致资源浪费。利用虚继承解决。

class Sheep::virtual public Animal{};
class Tuo::virtual public Animal{};

虚继承  Animal是虚基类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值