C++学习杂记

本文深入探讨了面向对象编程中的设计原则,通过详细解析类的定义、继承关系、成员访问控制,以及如何合理利用类与类之间的继承关系来构建复杂系统。以Girl类为例,展示了如何使用虚拟基类、公有派生、保护派生和私有派生,以及不同访问控制符带来的影响。并通过具体代码实现,展示了如何通过继承和成员函数的覆盖来增强系统的灵活性和可扩展性。

定义的头文件:

class Girl 定义成虚拟基类,这样将禁止生成基类Girl的对象,同时把构造函数:不带参数的构造函数Girl( )   、 带参

 

数的构造函数  Girl( string name , int height , int age, int weight ) 放在了protected作用域,进一步强调禁止在Girl类外创建基于

 

 

基类的对象,当然显式的把复制构造函数放在private域,也是有利无弊的。



class Beauty_girl  :  public Girl { }; 定义了一个Beauty_girl,从基类Girl公有派生而来,添加了四个新增加成员,

 

bool her_mettle ;  //气质

bool her_culture ;  //修养

bool her_kind_heart ; // 善良

bool her_virgin ;   

 

此时基类Girl 的 public成员将隐式作为派生类Beauty_girl 的Public成员(注意,用的是隐式,可以理解为从基类到派生类对应作用域的映

 

射),此时派生类对象可在类外部直接调用公有继承的方法或数据成员。

 

 

同样基类Girl的protected成员将隐式作为派生类Beauty_girl的protected成员(过分强调一个问题,可能略显多余,但我觉得对比犯下隐

 

晦的难以发现的bug,这样还是有必要的 【隐式可以理解为从基类到派生类对应作用域的映射,至少我认为不会是直接的copy,那样是很影

 

响C++类封装的效率的】) 。

 

 

当然基类Girl的private成员将隐式作为派生类Beauty_girl的private成员,这时在类外访问private成员(数据或者方法)必须通过派生类

 

对应的接口(及public方法)来间接调用。

 

 

 

class Sex_girl 通过私有继承Beauty_girl派生而来,此时基类Beauty_girl的public/protected成员都将作为派生类Sex_girl的

 

私有(private)成员,此时在类外,通过派生类对象直接调用基类public成员是不被允许的。派生类对象可在类外通过派生类public成员方法

 

来间接访问基类的public/protected成员。

 

 

 

###上面是类的实现###

 

 

###下面是main()函数###

 

 

 

 

附注:语言难以阐释的,代码总是通用的。

 

##运行结果:

 

运行结果

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值