C++继承中cB1::n与cB2::n的区分与数据成员理解

需积分: 27 1 下载量 85 浏览量 更新于2024-07-14 收藏 1.3MB PPT 举报
在C++面向对象程序设计中,"cB1::n"和"cB2::n"被描述为两个不同的数据成员,这表明在类的设计中,可能存在两个具有相同名称但属于不同基类或派生类的数据成员。继承是面向对象编程中一个重要的概念,它允许子类(派生类)扩展或重用父类(基类)的特性。这里提到的可能是两个独立的类B1和B2,它们各自都有名为'n'的数据成员,分别存储不同的数据。 章节6.1主要介绍了面向对象的两个关键合成与继承的概念。合成,即composition,指的是通过组合已有的对象来创建新类,这种关系强调了部分与整体的关系,如在Date类中,成员变量day、month和year是Date对象的实例。而继承,即inheritance,是指创建一个新类(子类)时,可以基于现有的类(基类)来定义,子类不仅可以获取基类的属性和方法,还可以添加自己的特性和行为。 在继承机制下,若cB1和cB2都是从同一基类继承,例如base_class,那么cB1::n和cB2::n如果是基类base_class中的'n'成员,它们将被视为同一个数据成员,因为它们在派生类中的引用实际上指向的是基类中的相同数据。然而,如果cB1和cB2是两个不同的派生类,即使它们都从相同的基类继承,cB1::n和cB2::n也会是两个独立的数据成员,因为每个派生类都有自己的实例空间。 例如,在Person类中,我们看到有姓名(name)、性别(sex)、出生日期(dob)和死亡日期(dod)等数据成员。这些数据成员可以被其他类继承,比如作者Author类继承自Person,并可能有自己的'n'成员。通过setDOB和setDOD方法设置日期,以及printDOB和printDOD方法显示日期,展示了如何利用继承进行信息的组织和复用。 在main函数中,创建了一个名为author的Author对象,设置了其出生日期。这体现了如何通过继承和组合来构建复杂的对象结构,通过调用父类的方法,子类对象的行为得以体现。 C++中的继承允许子类通过继承基类的属性和行为,实现代码的复用和模块化。在理解cB1::n和cB2::n是否相同时,关键在于分析它们所属的类关系,是共享的基类成员还是各自的派生类特性。通过实际例子,我们可以看到面向对象设计如何在继承机制下构造和管理复杂的数据结构。