C++学习杂记

来源:互联网 发布:nginx 锁定域名 编辑:程序博客网 时间:2024/06/07 17:33

定义的头文件:

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()函数###

 

 

 

 

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

 

##运行结果:

 

运行结果