知識總結:
繼承時三種訪問限制符的組合運用可以有效地組成不同的繼承組合途徑,私有成員只能在自己的類中使用,嚴格限制別人對自己成員的使用,保護類型只能讓自己及其自己的派生類使用,而公共繼承類型可以在任何地方調用;三種繼承類型的不同組合增加了繼承的多樣性,可以在不同的情況下有效地限定成員的訪問類型,做到更好的保護數據。
源程序:
/*【任務】理解基類中成員的訪問限定符和派生類的繼承方式
由下面派生類Student1對基類Student的繼承……
()請修改基類中成員的訪問限定符和派生類的繼承方式,考慮可能的運行結果或可能出現的錯誤,並在上機時進行驗證、對比,達到理解派生類成員的訪問屬性的目的。
()總結()的結果,將()的結果摘要寫到報告博文中;最後用自己的話總結確定派生類成員的訪問屬性的原則,也寫到報告博文中。
(代碼類似P363例.5,上機準備階段可以研究這段代碼,BB平臺中提供實驗用代碼。)
*/
#include<iostream>
#include"string"
using namespace std;
class Student //()修改student類中各數據成員和成員函數的訪問限定符,並觀察發生的現象
{
public:
Student(int n,string nam,char s) ;
void show();
~Student( ){ }
protected:
int num;
string name;
char sex ;
};
class Student1: public Student //()修改此處的繼承方式,並觀察發生的現象
{
public:
Student1(int n,string nam,char s,int a,string ad);//Student(n,nam,s) ;
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( );
return 0;
}