C++三大繼承與多級派生
阿新 • • 發佈:2018-12-30
C++公用繼承
1.1在定義一個派生類時把派生方式指定為public的,稱為公用繼承,派生類稱為公用派生類,基類稱為公用派生類。 1.2關於公用繼承的一段程式碼:#include<iostream>
usingnamespacestd;
classstudent
{
public:
voiddisplay();
voidsetValue(intnumber,intage,char*name);
private:
intnumber;
intage;
char*name;
};
classstudent1:publicstudent
{
public:
voiddisplay_1(){display();cout<<"sexis"<<sex<<endl;}
private:
boolsex;
};
voidstudent::setValue(intnumber,intage,char*name)
{
this->number=number;
this->age=age;
this->name=name;
}
voidstudent::display()
{
cout<<"numberis"<<number<<endl;
cout<<"nameis"<<name<<endl;
cout<<"ageis"<<age<<endl;
}
intmain()
{
student1stu;
stu.setValue(1,18,"shukai");
stu.display_1();
return0;
}
C++私有繼承
1.1在定義一個派生類時將基類的繼承方式指定為private的,稱為私有繼承,派生類叫私有派生類,基類叫私有基類。1.2不能通過派生類物件引用由私有基類繼承過來的任何成員。 1.3派生類的成員函式不能訪問私有基類的私有成員,但可以訪問私有基類的公用成員和保護成員。
C++保護繼承
1.1在定義一個派生類時將基類的繼承方式指定為protected的,稱為保護繼承,派生類叫保護派生類,基類叫保護基類。1.2保護繼承的特點是:保護基類的公用成員和保護成員在派生類中都成了保護成員,其私有成員仍為基類私有。
C++多級派生時的訪問屬性
1.1 A < B < C 類B是類A的派生類,類C是類B的派生類。類B稱為類A的直接派生類,類C稱為類A的間接派生類。類A是類B的直接基類,是類C的間接基類。1.2如果在多級派生時都採用公用繼承方式,那麼直到最後一級派生類都能訪問基類的公用成員和保護成員,如果採用私有繼承的方式,在經過若干次派生之後,基類的成員已經變成不可訪問的了,如果採用保護繼承的方式,在派生類外是無法訪問派生類中的成員的。而且經過若干次派生後,人們很難清楚的記住哪些成員可以訪問,哪些成員不可以訪問,常常出錯。因此,在實際中,往往用的是公用繼承。