博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++类的公用继承输入日志标题
阅读量:5062 次
发布时间:2019-06-12

本文共 1392 字,大约阅读时间需要 4 分钟。

在定义一个派生类时将基类的继承方式指定为public的,称为公用继承,用公用继承方式建立的派生类称为公用派生类(public derived class ),其基类称为公用基类(public base class )。

采用公用继承方式时,基类的公用成员和保护成员在派生类中仍然保持其公用成员和保护成员的属性,而基类的私有成员在派生类中并没有成为派生类的私有成员,它仍然是基类的私有成员,只有基类的成员函数可以引用它,而不能被派生类的成员函数引用,因此就成为派生类中的不可访问的成员。公用基类的成员在派生类中的访问属性见表11.1。

有人问,既然是公用继承,为什么不让访问基类的私有成员呢?要知道,这是C++中一个重要的软件工程观点。因为私有成员体现了数据的封装性,隐藏私有成员有利于测试、调试和修改系统。如果把基类所有成员的访问权限都原封不动地继承到派生类,使基类的私有成员在派生类中仍保持其私有性质,派生类成员能访问基类的私有成员,那么岂非基类和派生类没有界限了?这就破坏了基类的封装性。如果派生类再继续派生一个新的派生类,也能访问基类的私有成员,那么在这个基类的所有派生类的层次上都能访问基类的私有成员,这就完全丢弃了封装性带来的好处。保护私有成员是一条重要的原则。

[例11.1] 访问公有基类的成员。下面写出类的声明部分:

Class Student//声明基类{public: //基类公用成员   void get_value( )   {      cin>>num>>name>>sex;   }   void display( )   {      cout<<" num: "<
<

由于基类的私有成员对派生类来说是不可访问的,因此在派生类中的display_1函数中直接引用基类的私有数据成员num,name和sex是不允许的。只能通过基类的公用成员函数来引用基类的私有数据成员。可以将派生类Student1的声明改为

class Student1: public Student  //以public方式声明派生类Student1{public:   void display_1( )   {      cout<<" age: "<
<
string addr;};

然后在main函数中分别调用基类的display函数和派生类中的display_1函数,先后输出5个数据。

可以这样写main函数(假设对象stud中已有数据):

int main( ){   Student1 stud;//定义派生类Student1的对象stud   stud.display( ); //调用基类的公用成员函数,输出基类中3个数据成员的值   stud.display_1(); //调用派生类公用成员函数,输出派生类中两个数据成员的值   return 0;}

请根据上面的分析,写出完整的程序,程序中应包括输入数据的函数。

实际上,程序还可以改进,在派生类的display_1函数中调用基类的display函数,在主函数中只要写一行:
    stud.display_1();
即可输出5个数据。

转载于:https://www.cnblogs.com/secret114/p/4552504.html

你可能感兴趣的文章
IOS-图片操作集合
查看>>
Android bitmap图片处理
查看>>
Android应用程序进程启动过程的源代码分析
查看>>
adb logcat 命令行用法
查看>>
Redis学习手册(Key操作命令)
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
泛型第23条:请不要在新代码中使用原生态类型
查看>>
非对称加密
查看>>
bzoj 3413: 匹配
查看>>
从下周开始就要采用网上记录值班日志了
查看>>
在qq中可以使用添加标签功能
查看>>
eclipse 自定义布局
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>
SpringMVC的@Validated校验注解使用方法
查看>>
Python之os模块
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
【蓝桥杯】PREV-21 回文数字
查看>>