C++的繼承和派生你了解嗎
繼承的寫(xiě)法
//父類(lèi) 基類(lèi)
class parent
{
};
//子類(lèi) 派生類(lèi)
//公有繼承
class soon1:public parent
{
public:
protected:
};
//保護(hù)繼承
class son2:protected parent
{
public:
protected:
};
//私有繼承
class son3:private parent
{
public:
protected:
};
//繼承和派生
//繼承:子類(lèi)中沒(méi)有產(chǎn)生新的屬性和行為
//派生:派生類(lèi)中有新的屬性和行為產(chǎn)生
class 子類(lèi)名:繼承方式 父類(lèi)名
{
};
//繼承方式 就是權(quán)限限定詞
繼承實(shí)質(zhì)與權(quán)限問(wèn)題 ?
- 繼承的實(shí)質(zhì):父類(lèi)的數(shù)據(jù)和成員子類(lèi)中有一份?
- 權(quán)限問(wèn)題:繼承方式只會(huì)增強(qiáng)父類(lèi)屬性在子類(lèi)中的權(quán)限顯示
| public | protected | private | |
|---|---|---|---|
| public繼承 | public | protected | 不可直接訪問(wèn) |
| protected繼承 | protected | protected | 不可直接訪問(wèn) |
| private繼承 | private | protected | 不可直接訪問(wèn) |
#include<iostream>
#include<string>
using namespace std;
class parent
{
public:
void print()
{
cout << name << "\t" << money << endl;
}
string& getWide()
{
return wide;
}
protected:
string name;
int money;
private:
string wife;
};
//子類(lèi)
class son :public parent
{
public:
void printSon()
{
print();
cout << name<<"\t"<<money<< endl;
//cout << wife << endl;父類(lèi)中的私有屬性不能直接訪問(wèn)
cout << getWide() <<endl;//間接通過(guò)父類(lèi)的函數(shù)訪問(wèn)
}
protected:
};
class A
{
public:
int a1;
protected:
int a2;
private:
int a3;
};
class B :public A
{
public:
//int a1;
protected:
//int a2;
private:
//int a3;不能直接訪問(wèn)
};
class C :protected A
{
public:
protected:
//int a1; public 顯示protected
//int a2;
private:
//int a3;不能直接訪問(wèn)
};
class D :private A
{
public:
void print()
{
cout << a1 << endl;;
cout << a2<< endl;
}
protected:
private:
//int a1; public 顯示protected
//int a2;
//int a3;//父類(lèi)的私有屬性不能直接訪問(wèn)
};
//私有繼承會(huì)導(dǎo)致當(dāng)前父類(lèi) 無(wú)法在孫子類(lèi)有任何作用
class F :public D
{
public:
};
int main()
{
son boy;
boy.printSon();
B b;
b.a1 = 123;
C c;
//c.a1 = 12;
return 0;
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
利用反射獲得類(lèi)的public static/const成員的值實(shí)例
下面小編就為大家?guī)?lái)一篇利用反射獲得類(lèi)的public static/const成員的值實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
基于Qt實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器
這篇文章主要介紹了如何使用Qt框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器應(yīng)用,我們將使用C++編程語(yǔ)言和Qt的圖形用戶界面庫(kù)來(lái)開(kāi)發(fā)這個(gè)應(yīng)用,并展示如何實(shí)現(xiàn)基本的算術(shù)操作,希望對(duì)大家有所幫助2023-11-11
C語(yǔ)言pow()函數(shù)實(shí)現(xiàn)求x的y次方的值
這篇文章主要介紹了C語(yǔ)言pow()函數(shù)實(shí)現(xiàn)求x的y次方的值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
C++下程序運(yùn)行時(shí)間的四種常用計(jì)時(shí)方法總結(jié)
這篇文章主要介紹了C++下程序運(yùn)行時(shí)間的四種常用計(jì)時(shí)方法,介紹了幾種常用的計(jì)時(shí)方法,包括低精度的clock()和GetTickCount(),以及高精度的gettimeofday()和QueryPerformanceCounter(),需要的朋友可以參考下2024-09-09
C++高級(jí)數(shù)據(jù)結(jié)構(gòu)之線段樹(shù)
這篇文章主要介紹了C++高級(jí)數(shù)據(jù)結(jié)構(gòu)之線段樹(shù),文章圍繞主題的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
詳解C語(yǔ)言中的char數(shù)據(jù)類(lèi)型及其與int類(lèi)型的轉(zhuǎn)換
這篇文章主要介紹了詳解C語(yǔ)言中的char數(shù)據(jù)類(lèi)型及其與int類(lèi)型的轉(zhuǎn)換,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08

