您的位置:首页 > 其它

第十二周实验报告(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++中一个重要的软件工程观点。因为私有成员体现了数据的封装性,隐藏私有成员有利于测试、调试和修改系统。如果把基类所有成员的访问权限都原封不动地继承到派生类,使基类的私有成员在派生类中仍保持其私有性质,派生类成员能够访问基类的私有成员,那么基类和派生类就没有界限了,这就破坏了基类的封装性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息