12.1 理解基类中成员的访问限定符和派生类的限定方式

来源:互联网 发布:2015网络银行交易金额 编辑:程序博客网 时间:2024/06/01 21:14

程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 第十二周 任务一 
* 作 者: 杨森

* 完成日期: 2012年 5 月 7 日
* 版 本 号: V 1.0

源程序:

#include <iostream>#include <string>using namespace std;class Student {public: Student(int n,string nam,char s) ;void show();~Student( ){ }  protected: int num;string name;char sex ; };class Student1: protected Student { public: Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s) {age=a; addr=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) 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;}


运行结果:

num: 10010name: Wang-lisex: fage: 19address: 115 Beijing Road,Shanghainum: 10011name: Zhang-funsex: mnum: 20010name: He-xinsex: m请按任意键继续. . .


将基类继承方式改为  protected 继承,错误提示为:

“Student::show”不可访问,因为“Student1”使用“protected”从“Student”继承

将基类继承方式改为 private 继承,错误提示为:

“Student::show”不可访问,因为“Student1”使用“private”从“Student”继承


小感:

    当类的继承方式为私有继承时,基类的public成员和protected成员被继承后成为派生类的private成员,派生类的其它成员可以直接访问它们,但是在类的外部通过派生类的对象无法访问。

    当类的继承方式为公有继承时,基类的public成员和protected成员被继承到派生类中仍作为派生类的public成员和protected成员,派生类的其它成员可以直接访问它们。

    当类的继承方式为保护继承时,基类的public成员和protected成员被继承到派生类中都作为派生类的protected成员,派生类的其它成员可以直接访问它们,但是类的外部使用者不能通过派生类的对象访问它们。

 

 

原创粉丝点击