1樓:匿名使用者
這個特性是微軟的擴充套件,c++ primer講的是標準c++,所以不會有這個內容。
解決辦法:把ibase宣告為__inte***ce__inte***ce ibase1;
__inte***ce ibase2;
class inherit : public ibase1, public ibase2;
void inherit::ibase1::f()void inherit::ibase2::f()
2樓:匿名使用者
問題出在網域名稱查詢。
inherit::ibase2::
這個含義代表從inherit類網域名稱找ibase2類網域名稱再找fun1.
嘗試把inherit::去掉吧,沒什麼用。
這個既不是多型,也不過載,感覺只是把基類的虛函式的實現改到子類中實現了,實現的還是基類的函式。但語法上還是純虛函式,不能例項化。
而實際上子類並沒有生成虛函式,只有乙個vptr,而vtable裡面沒有函式。
3樓:高禾
class ibase1;
class ibase2;
class inherit:
public virtual ibase1, virtual public ibase2virtual int ibase2::func1();//};int inherit::func1()main中
ibase1 *p1 = new inherit(); //列印 「ibase1 func1」
p1->func1();
ibase2 *p2 = new inherit(); //列印"ibase2 func1"
p2->func1();
vc2005是可以編譯的過,如何把兩個都在類外定義,沒有找到方法。
c++多繼承時,多個基類函式有相同名稱的變數,怎麼解決?
4樓:匿名使用者
可使用虛基類d a,b同名函式和資料作為共性由抽象類d派生出來,這樣多繼承a與b時的c可以只繼承重複函式或資料中的乙個。
c++中子類繼承父類,為何可以在子類和父類中命名相同名字的函式?
5樓:匿名使用者
你執行一bai
下下面的代du碼,就明白了zhi
。class c
};class b : public c
};class a : public b
void btest()
void ctest()
};void main()
ps:如果是虛函式,而dao且派生類的函式籤專名屬與基類的簽名一致,那麼,基類的該同名函式指標已經被覆蓋了,所以,就不可能再呼叫到基類的同簽名函式了。非虛函式才可以使用上面的方面來呼叫。
6樓:匿名使用者
這就是c++的多型了。。
虛函式應用,可以區分。
如果子類要呼叫父類的函式,可以不再宣告該函式,前提 是基類不要是純虛的。
7樓:求是的夢
這種行為被稱為overwrite
c++多重繼承,我這裡幾個函式名相同的函式,引數個數不同為什麼同名覆蓋而不是過載?
8樓:匿名使用者
函式過載是
copy是根據函式的引數列表區分函式的版本,返回值不同是不能區分的。
比如 int fun( int a,int b);
在編譯的時候,編譯器編譯函式,生成乙個類似"_fun_int_int"的名稱放在庫中,以便程式呼叫的時候使用。
如果你想過載void fun( int a,int b);
生成的函式名稱也是"_fun_int_int"
函式在庫中的名稱是唯一的,就像你在程式中定義變數一樣。
這就算是重定義吧(姑且這麼說),這時編譯器該呼叫哪個函式?
c++派生類中允許有相同名字相同引數的函式嗎
9樓:匿名使用者
允許啊,這樣不就是 oop 的多型性麼
C語言for的多重迴圈C語言for的多重迴圈是怎麼一回事啊能給小弟詳細講解以下嗎
舉例子有點難,要不直接講一下。首先,定義迴圈,將i的起始值設為1,迴圈條件為i 10 也就是i的尾值為9 然後在內部定義巢狀迴圈,將j的起始值設為1,迴圈條件為j i 這是全迴圈裡最難理解的,這個巢狀迴圈尾值是i當時的值,比如當時i的值為8,那麼j將會從1執行到8 所以執行順序可以這樣理解 1,確定...
c 虛繼承有什麼缺點,C 中虛繼承和一般的繼承有什麼不同
不能抄說是缺點,只能說是特點。b c虛繼承a的話,那麼任何繼承b c的類都得指定如何構造其中包含的a。如果不是繼承,那麼類b c分別各自指明如何構造其中包含的a,繼承b c的類無需再指明也不能指明如何構造其中包含的a。虛繼承的話,虛基類必須由每個最後派生的類初始化 普通繼承的話,基類由這個基類直接派...
C 程式設計,繼承與派生
include include using namespace std class instring virtual instring 輸入函式 void input cin.getline buf,1024 str new char strlen buf 1 strcpy str,buf str ...