第十二周实验报告(1)
2012-05-07 18:37
246 查看
/* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作 者: 李瑞 * 完成日期: 2012 年 5月6 日 * 版 本 号: v1.0 * 对任务及求解方法的描述部分 * 输入描述:…… * 问题描述:…… * 程序输出:…… * 程序头部的注释结束*/
/*【任务1】理解基类中成员的访问限定符和派生类的继承方式 由下面派生类Student1对基类Student的继承…… (1)请修改基类中成员的访问限定符和派生类的继承方式,考虑可能的运行结果或可能出现的错误,并在上机时进行验证、对比,达到理解派生类成员的访问属性的目的。 (2)总结(1)的结果,将(1)的结果摘要写到报告博文中;最后用自己的话总结确定派生类成员的访问属性的原则,也写到报告博文中。 (代码类似P363例11.5,上机准备阶段可以研究这段代码,BB平台中提供实验用代码。)*/ #include<iostream> #include<string> using namespace std; class Student //(1)修改student类中各数据成员和成员函数的访问限定符,并观察发生的现象 { public: Student(int n, string nam, char s) ; void show(); ~Student( ){ } protected: int num; string name; char sex ; }; class Student1: public Student //(2)修改此处的继承方式,并观察发生的现象 { public: Student1(int n, string nam, char s, int a, string ad); void show1( ); ~Student1( ){ } private: int age; string addr; }; Student::Student(int n, string nam, char s) { num = n; name = nam; sex = s; } void Student::show() { cout << "num: " << num << endl; cout << "name: " << name << endl; cout << "sex: " << sex << endl << endl; } Student1::Student1(int n, string nam, char s, int a, string ad):Student(n, nam, s) { age = a; addr = ad; } void Student1::show1( ) { cout << "num: " << num << endl; cout << "name: " << name << endl; cout << "sex: " << sex << endl; cout << "age: " << age << endl; cout << "address: " << addr << endl << endl; } int main( ) { Student1 stud1(10010, "Wang-li", 'f', 19, "115 Beijing Road,Shanghai"); Student1 stud2(10011, "Zhang-fun", 'm', 21, "213 Shanghai Road,Beijing"); Student stud3(20010, "He-xin", 'm'); stud1.show1( ); stud2.show( ); stud3.show( ); system("pause"); return 0; }
运行结果:
公有继承基类成员在派生类中的访问属性
基类成员 private成员 public成员 protected成员
内部访问 不可访问 可访问 可访问
对象访问 不可访问 可访问 不可访问
基类的私有成员对的派生类来说无论怎样被继承,对派生类而言都是不能直接访问的。这个特性正式C++中一个重要的软件工程观点。因为私有成员体现了数据的封装性,隐藏私有成员有利于测试、调试和修改系统。如果把基类所有成员的访问权限都原封不动地继承到派生类,使基类的私有成员在派生类中仍保持其私有性质,派生类成员能够访问基类的私有成员,那么基类和派生类就没有界限了,这就破坏了基类的封装性。
相关文章推荐
- 第十二周实验报告(一)
- 第十二周实验报告(一) 完成函数 计算直线的长度
- 第十二周实验报告1
- 第十二周实验报告2(多重继承)
- 《C++第十二周实验报告2-1》--分别定义Teacher(教师)类和Cadre(干部采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)
- 第十二周实验报告4
- 第十二周实验报告3
- (补)第十二周实验报告(2)
- 20162317袁逸灏 第十二周实验报告:实验三
- 《C++第十二周实验报告3-1》-----自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,
- 第十二周实验报告(任务一)【派生类成员的访问属性的原则】
- 第十二周实验报告一
- 第十二周实验报告2
- 第十二周实验报告任务4
- 第十二周实验报告3
- (补)第十二周实验报告(3)
- 第十二周实验报告(4)
- 第十二周实验报告4
- (补)第十二周实验报告(4)
- 第十二周实验报告(任务二)