国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++學習一虛繼承

2019-11-11 05:15:38
字體:
供稿:網(wǎng)友

當需要使用菱形繼承時,會出現(xiàn)這種情況:最頂端的基類被繼承了兩次,于是在內(nèi)存中將有兩個,而且分別存在。這樣一般不符合我們的要求,所以會使用到虛繼承。也就是在第一派生類中加入virtual虛繼承頂端的基類。

以下代碼就能很好的證明只要去掉virtual 就會顯示兩次調(diào)用Person的構(gòu)造函數(shù)。這里如果使用虛繼承,那么Person會只使用默認值,因為不可能繼承兩個的值,所以,只使用自己的默認值

#include <iostream>#include <stdlib.h>#include <string>using namespace std;class Person {public:	Person(string color = "blue"):m_strColor(color) {		cout << "Person()" << endl;	}	void PRintColor(void) {		cout << m_strColor << endl;	}	~Person() {		cout << "~Person()" << endl;	}private:	string m_strColor;};class Farmer :virtual public Person {public:	Farmer(string color):Person("Farmer" + color) {		cout << "Farmer()" << endl;	}	~Farmer() {		cout << "~Farmer()" << endl;	}};class Worker :virtual public Person {public:	Worker(string color):Person("Worker" + color) {		cout << "Worker()" << endl;	}	~Worker() {		cout << "~Worker()" << endl;	}};class MigrantWorker :public Worker, public Farmer {public:	MigrantWorker(string color):Worker(color),Farmer(color) {		cout << "MigrantWorker()" << endl;	}	~MigrantWorker() {		cout << "~MigrantWorker()" << endl;	}};int main(void) {	MigrantWorker *p = new MigrantWorker("yellow");	p->Worker::Person::PrintColor();	p->Farmer::Person::PrintColor();	delete p;	p = NULL;	system("pause");	return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 澄城县| 广河县| 阿坝| 本溪市| 迭部县| 耒阳市| 丁青县| 思南县| 博爱县| 宣威市| 林芝县| 留坝县| 琼海市| 乐山市| 武冈市| 抚顺县| 广灵县| 三都| 蓝山县| 齐河县| 亚东县| 峡江县| 竹北市| 贵南县| 获嘉县| 延庆县| 嘉定区| 韶山市| 洛阳市| 江都市| 德庆县| 四川省| 简阳市| 锡林浩特市| 时尚| 安西县| 弋阳县| 宁南县| 师宗县| 宁南县| 揭阳市|