【C++】继承详解,菱形继承问题

本文详细介绍了C++中的继承概念,包括公共继承、保护继承和私有继承的比较,以及赋值兼容规则。重点讨论了同名隐藏现象,并通过实例展示了子类对象的构造过程。此外,文章还深入探讨了菱形继承带来的数据冗余和二义性问题,并提出虚拟继承作为解决方案,解释了虚拟继承与普通继承的区别,以及如何通过虚基表解决二义性问题。

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

概念

是面向对象程序设计是代码可以复用的最重要的手段,它允许程序员在保持原有的类的特性的基础下进行拓展,增加功能。 这样产生的类被称为派生类;

class Person
{
   
   
public:
void Print()
{
   
   
cout << "name:" << _name << endl; cout << "age:" << _age << endl;
}
protected:
string _name = "peter"; // 姓 名
int _age = 18;	// 年 龄
};

// 继承后父类的Person的成员(成员函数+成员变量)都会变成子类的一部分。这里体现出了Student和Teacher复用了Person的成员。下面我们使用监视窗口查看Student和Teacher对象,可以看到变量的复用。调    用Print可以看到成员函数的复用。
class Student : public Person
{
   
   
protected:
int _stuid; // 学 号
};

class Teacher : public Person
{
   
   
protected:
int _jobid; // 工 号
};

int main()
{
   
   
Student s; Teacher t; s.Print();
t.Print();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值