C++中的继承

本文详细介绍了C++中的继承概念,包括继承的定义、父类和子类的对象赋值转换、作用域变化、默认成员函数、继承原则,以及深入探讨了继承与友元、静态成员的关系。特别地,文章讨论了菱形继承和虚拟继承的差异,解释了在非虚继承和虚继承中成员的存储方式和寻址规则,强调了在设计时优先考虑组合而非继承的重要性。
摘要由CSDN通过智能技术生成

继承的概念和定义

继承的概念

继承是面向对象程序设计使代码可以复用的重要手段,当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。

继承的定义

定义格式

在这里插入图片描述

继承父类成员访问关系的变化

类成员/继承方式 public继承 protected继承 private继承
基类的public成员 派生类的public成员 派生类的private成员 派生类的private成员
基类的protect成员 派生类的protected成员 派生类的protected成员 派生类的private成员
基类的private成员 派生类中不可见 派生类中不可见 派生类中不可见

父类和子类的对象赋值转换

  1. 子类对象可以赋值给父类的对象/父类的指针/父类的引用。一般情况下子类对象都比父类对象大,这里赋值的时候会产生切片或者叫切割。
    切片/切割
    在这里插入图片描述

  2. 父类对象不能赋值给子类对象。但是指针和引用可以,但是必须进行强制类型转换,并且这个行为十分危险,可能存在越界访问。

class Person
{
   
public:
	string _name;
};
class Student:public Person
{
   
public:
	int _age;
	int _major;
};

int main()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值