錯誤的模糊應用(類繼承問題)

2022-08-24 03:48:11 字數 785 閱讀 9015

當繼承關係出現菱形繼承時,可能出現二義性

當類me訪問基類human的公共變數成員時,系統將不知道通過哪個上一層類訪問該成員變數,因為chinese和woman都從human繼承了成員變數,此二義性錯誤。

【實現過程】

上述二義性現象可以通過虛繼承避免,它的格式如下:

class a

{};class b virtual public a

{};

本例項實現的具體**如下:

#include#includeusing namespace std;

class human

bool m_beauty;

};class chinese:virtual public human

;class woman:virtual public human

;class me:public chinese,public woman

};void main()

{ me _me(true);

cout<<_me.getbeauty>

第04~12行是基類human的定義體,其中有成員變數m_beauty和成員函式getbeauty()。第13~18行是子類chinese和woman,虛繼承自基類human。第19~26行是類me多繼承與chinese和woman。由於虛繼承,所以當類me的物件_me訪問基類的成員變數時無二義性錯誤。

模板類的繼承問題

class a void fun class b void fun class c void fun templateclass test void show int main int argc,char argv 我們先來大概分析一下這段沒有實際意義的 首先定義了類a,類b,類c,這三個類都具有s...

Python類的繼承問題

話不多說,直接上 class parent object x 1class child1 parent pass class child2 parent pass print parent.x,child1.x,child2.x child1.x 2print parent.x,child1.x,c...

類的繼承中的乙個錯誤

基類 templateclass mstack 派生類1 template class s1 public mstack 派生類2 templateclass s2 public mstack 兩個派生類都實現了基類的虛函式,結果出現編譯錯誤 error c2995 bool mstack mpus...