C 多重繼承的弊端 二義性 如何解決

2021-10-05 16:54:53 字數 2757 閱讀 3793

解決方案一:

使用"類名"::進行指定, 指定呼叫從哪個基類繼承的方法!!!

wsc.father::

dance()

;wsc.mother::

dance()

;

解決方案二:在子類中重新實現這個同名方法, 並在這個方法內部, 使用基類名進行限定,

來呼叫對應的基類方法.

void son::

dance()

不bb直接上**:

第乙個類: father(老爸)

第二個類: mother(老媽)

第三個類: son(兒子)

father.h

#pragma once

#include

using

namespace std;

class

father

;

father.cpp

#include

"father.h"

#include

father::

father

(const

char

* lastname,

const

char

* firstname)

father::

~father()

void father::

playbasketball()

void father::

dance()

mother.h

#pragma once

#include

using

namespace std;

class

mother

;

mother.cpp

#include

"mother.h"

#include

using

namespace std;

mother::

mother

(const

char

* food,

const

char

* lastname,

const

char

* firstname)

mother::

~mother()

void mother::

dance()

son.h

#pragma once

#include

"mother.h"

#include

"father.h"

class

son:

public father,

public mother

;

son.cpp

#include

"son.h"

#include

using

namespace std;

son::

son(

const

char

* lastname,

const

char

* firstname,

const

char

* food,

const

char

* game)

:father

(lastname,firstname)

,mother

(food)

son::

~son()

void son::

playgame()

void son::

dance()

main

#include

"father.h"

#include

"mother.h"

#include

"son.h"

intmain()

執行環境: vs2019

執行結果:

學到的知識要, 多複習, 多總結, 多敲. 需要時間的積累, 才能引起質的改變. 自己寫不出來的永遠是別人的.

分享一下我的技巧: 代數法把具體的數字帶進去, 看看能能能找到規律(掌握思想).

還有就是畫圖, 也很重要. 用筆畫出來, 把數代進去, 方法雖然笨, 但真的很實用, 好記憶不如爛筆頭!!!

我是小白, 如果存在問題, 歡迎大神給予評判指正.

錯了不可怕, 可怕的是找不出bug

今日是: 2023年5月2日, (由於疫情的原因)在家裡整天坐在電腦前, 眼神逐漸從大到小, 視力也有所大大的下降 ,中午期待打籃球. 寫部落格, 就當寫寫日記吧!!!,

希望給個贊: 反正你又不虧, 順便而已

多重繼承轉換二義性

如果乙個類繼承多個基類,而且這些基礎繼承相同的基類,則進行型別轉換時,如果轉換成相同的父型別,編譯時會產生二義性錯誤 class a class b public a class c public a class d public b,public c d pa new d a pb a pa er...

多重繼承中二義性的消除

類a派生b和c,類d從b,c派生,如何將乙個類a的指標指向乙個類d的例項?解析 這道題實際上考查的是如何消除多重繼承引起的向上繼承二義性問題。程式 如下所示 class a class b public a class c public a class d public b,public c int...

C 繼承 二義性 虛繼承

繼承 子類擁有父類所有的成員變數和函式 子類是一種特殊的父類 子類可以當做父類的物件使用 子類可以擁有父類沒有的方法和屬性。class parent class child public parent int main 繼承的訪問控制 c 中的繼承方式會影響子類對外訪問屬性 1 看呼叫語句,是在類的...