第十二周实验报告1
2012-05-07 19:07
274 查看
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:理解基类中成员的访问限定符和派生类的继承方式。 * 作 者: 刘程程 * 完成日期: 2012 年 05 月 7 日 * 版 本 号: V1.0 * 对任务及求解方法的描述部分 * 输入描述:由下面派生类Student1对基类Student的继承…… * 问题描述:(1)请修改基类中成员的访问限定符和派生类的继承方式,考虑可能的运行结果或可能出现的错误,并在上机时进行验证、对比,达到 理解派生类成员的访问属性的目的。 * 程序输出: 总结(1)的结果,将(1)的结果摘要写到报告中;最后用自己的话总结确定派生类成员的访问属性的原则,也写到报告中。 * 程序头部的注释结束 */ 程序源代码: #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; }
改动1:如果把class Student1:public Student中的public改为protected,则编译器显示出错误为:error C2247: “Student::show”不可访问,因为“Student1”使用“protected”从“Student”继承,Student类里的成员函数void show();变成了受保护型的,而受保护的成员不能被类外直接访问。
改动2:如果把class Student1:public Student中的public改为private,则编译器显示出错为: error C2247: “Student::show”不可访问,因为“Student1”使用“private”从“Student”继承。因为Student类里的成员函数void show();变成了私有的,而私有的成员在类外不能调用。
改动3:如果把Student中的public改为protected,编译器出现错误为:1、“Student::Student”: 无法访问 protected 成员(在“Student”类中声明),2、“Student::~Student”: 无法访问 protected 成员(在“Student”类中声明),3、“Student::show”: 无法访问 protected 成员(在“Student”类中声明)。这是因为受保护的成员不能被类外直接访问。
相关文章推荐
- 第十二周实验报告(一)
- 第十二周实验报告(一) 完成函数 计算直线的长度
- 第十二周实验报告1
- 第十二周实验报告3
- 第十二周实验报告2(多重继承)
- 《C++第十二周实验报告2-1》--分别定义Teacher(教师)类和Cadre(干部采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)
- 第十二周实验报告4
- 第十二周实验报告3
- (补)第十二周实验报告(2)
- 20162317袁逸灏 第十二周实验报告:实验三
- 《C++第十二周实验报告3-1》-----自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,
- 第十二周实验报告(任务一)【派生类成员的访问属性的原则】
- 第十二周实验报告一
- 第十二周实验报告2
- 第十二周实验报告任务4
- 第十二周实验报告3
- (补)第十二周实验报告(3)
- 第十二周实验报告(4)
- 第十二周实验报告4
- (补)第十二周实验报告(4)