91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

繼承與派生定義及相關程序調用舉例

發布時間:2020-06-23 22:47:40 來源:網絡 閱讀:433 作者:巖梟 欄目:編程語言

一、面向對象程序設計的特點:抽象,封裝,繼承,多態性。

二、3種成員訪問限定符及其繼承關系:

繼承與派生定義及相關程序調用舉例 

問題:

private/protected限定符都是限定直接訪問,那他們之間有什么區別?

解答:在本類中,privateprotected作用是相同的,但是protected可以被繼承,而private卻不能。

三種繼承關系下基類成員的在派生類的訪問關系變化如下表所示:

繼承與派生定義及相關程序調用舉例 

總結:

1.基類的私有成員在派生類中是不能被訪問的,如果一些基類成員不想被基類對象直接訪問,但需要在派生類中能訪問,就定義為保護成員。可以看出保護成員限定符是因繼承才出現的。

2.public繼承是一個接口繼承,每個父類可用的成員對子類也可用,因為每個子類對象也都是一個父類對象。

3.protetced/private繼承是一個實現繼承,基類的部分成員并未完全成為子類接口的一部分,所以非特殊情況下不會使用這兩種繼承關系,在絕大多數的場景下使用的都是公有繼承。

4.不管是哪種繼承方式,在派生類內部都可以訪問基類的公有成員和保護成員,但是基類的私有成員存在但是在子類中不可見(不能訪問)。

5.使用關鍵字class時默認的繼承方式是private,使用struct時默認的繼承方式是public,不過最好顯示的寫出繼承方式在實際運用中一般使用都是public繼承,極少場景下才會使用protetced/private繼承.

三、繼承和派生相關定義舉例

類的繼承:一個新類從已有的類那里獲得其已有特性。

類的派生:從已有的類(父類)產生一個新的子類。

派生類是基類的具體化,基類是派生類的抽象。

繼承的3種分類:

單繼承:一個派生類只從一個基類派生。

多繼承:一個派生類有兩個或多個基類。

 繼承與派生定義及相關程序調用舉例 

菱形繼承:

繼承與派生定義及相關程序調用舉例 

聲明派生類的一般形式:

class 派生類名:[繼承方式基類名

{

    派生類新增加的成員

}

例1.用公用繼承方式,在程序中包括輸入數據的函數,運行程序輸入num,name,sex,age,addr的值,輸出以上5個數據的值。

解:程序:

#include<iostream>

using namespace std;

class Student

{

public:

void get_value()//輸入基類的3個私有成員的值

{

cin >> num >> name >> sex;

}

void display()//輸出基類的3個私有成員的值

{

cout << "num:" << num << endl;

cout << "name:" << name << endl;

cout << "sex:" << sex << endl;

}


private:

int num;

char name[10];

char sex;

};


class Student1:public Student//定義公用派生類Student1

{

public:

void get_value_1()//函數的作用是輸入5個數據成員的值

{

get_value();//調用函數,輸入基類的3個私有數據成員的值

cin >> age >> addr;//輸入派生類的兩個私有數據成員的值

}

void display_1()//輸出派生類的2個私有數據成員的值

{

cout << "age:" << age << endl;

cout << "address:" << addr << endl;

}

private:

int age;

char addr[30];

};


int main()

{

Student1 stud1;//定義公用派生類Student1的對象stud1

stud1.get_value_1();//輸入5個數據

stud1.display();//輸出基類的3個私有數據成員的值

stud1.display_1();//輸出派生類2個私有數據成員的值

system("pause");

return 0;

}

結果:

1111 yao M 20 xi'an

num:1111

name:yao

sex:M

age:20

address:xi'an

請按任意鍵繼續. . .

例2.用私有繼承方式,在程序中包括輸入數據的函數,運行程序輸入num,name,sex,age,addr的值,輸出以上5個數據的值。

解:程序:

#include<iostream>

using namespace std;

class Student

{

public:

void get_value()

{

cin >> num >> name >> sex;

}

void display()

{

cout << "num:" << num << endl;

cout << "name:" << name << endl;

cout << "sex:" << sex << endl;

}


private:

int num;

char name[10];

char sex;

};


class Student1:private Student//定義私有派生類Student1

{

public:

void get_value_1()

{

get_value();

cin >> age >> addr;

}

void display_1()

{

display();

cout << "age:" << age << endl;

cout << "address:" << addr << endl;

}

private:

int age;

char addr[30];

};


int main()

{

Student1 stud1;

stud1.get_value_1();

stud1.display_1();//只需調用一次stud1.display_1()

system("pause");

return 0;

}

結果:

1111 yao M 20 xi'an

num:1111

name:yao

sex:M

age:20

address:xi'an

請按任意鍵繼續. . .

例3.用保護繼承方式,在程序中包括輸入數據的函數,運行程序輸入num,name,sex,age,addr的值,輸出以上5個數據的值。

解:程序:

#include<iostream>

using namespace std;

class Student//聲明基類

{

public://基類公用成員

void get_value();

void display();

protected://基類保護成員

int num;

char name[10];

char sex;

};


void Student::get_value()

{

cin >> num >> name >> sex;

}

void Student::display()

{

cout << "num:" << num << endl;

cout << "name:" << name << endl;

cout << "sex:" << sex << endl;

}


class Student1:protected Student//聲明一個保護派生類Student1

{

public:

void get_value_1();

void display_1();

private:

int age;

char addr[30];

};


void Student1::get_value_1()

{

get_value();

cin >> age >> addr;

}

void Student1::display_1()

{

cout << "num:" << num << endl;

cout << "name:" << name << endl;

cout << "sex:" << sex << endl;

cout << "age:" << age << endl;

cout << "address:" << addr << endl;

}


int main()

{

Student1 stud1;

stud1.get_value_1();

stud1.display_1();

system("pause");

return 0;

}

結果:

1111 yao M 20 xi'an

num:1111

name:yao

sex:M

age:20

address:xi'an

請按任意鍵繼續. . .

四、繼承與轉換--賦值兼容規則:

1.子類對象可以賦值給父類對象,父類對象不能賦值給子類對象;

2.父類的指針/引用可以指向子類對象,子類的指針/引用不能指向父類對象(可以通過強制類型轉換完成)

五、繼承體系中的作用域:

1.在繼承體系中基類和派生類都有獨立的作用域。

2.子類和父類中有同名成員,子類成員將屏蔽父類對成員的直接訪問。(在子類成員函數中,可以使用 基類::基類成員 訪問)--隱藏

注意:在實際中在繼承體系里面最好不要定義同名的成員。

六、派生類的6個默認成員函數

繼承與派生定義及相關程序調用舉例


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆安县| 盐山县| 北碚区| 兴国县| 连南| 江源县| 永新县| 沁阳市| 常德市| 禹城市| 循化| 文水县| 库伦旗| 阿勒泰市| 宣汉县| 宁陵县| 循化| 湘西| 博爱县| 洛南县| 丽水市| 汶川县| 苏州市| 科尔| 广德县| 惠州市| 苗栗市| 安平县| 建阳市| 南陵县| 吉水县| 乌拉特中旗| 武陟县| 沁阳市| 临猗县| 化德县| 静宁县| 新龙县| 石台县| 高碑店市| 天峻县|