1樓:匿名使用者
這裡用到了c++的多型性,根據執行時的情況,指標p可以根據情況呼叫b0,b1或b2的函式,但是前提是該函式必須是虛擬函式,所以這裡的display函式必須是虛擬函式才行,即:
virtual void display()在c++中,如果父類的函式是虛擬函式,那麼子類過載的這個函式自動變為虛擬函式,不論加不加virtual關鍵字。所以這裡只要b0的display()函式加上virual關鍵字即可,但是作為一個良好的程式設計習慣,建議三個類都加。
關於c++多型的具體知識,請自行查閱教材
2樓:吱___吱
c++中不同型別的資料之間一般是不允許賦值的,但有一個例外,就是派生類的物件。
基類的指標可以指向派生類的物件,但是通過這個指標只能訪問原基類中的成員變數及函式。
解決這個問題的途徑有兩個,一是使用強制型別轉換,把指標轉變為b1類指標,第二就是把display函式設定為虛擬函式
3樓:流逝____的
以下為修改後的程式,只要在基類中的 void display()函式前面加virtual就可以了,這就是要用到虛擬函式,來實現多型性(就是用基類的指標來呼叫派生類的成員函式)
如果沒有加virtual 基類的指標只能呼叫基類的成員函式#include
class b0
};class b1: public b0};class b2: public b1};void fun(b0 *ptr)
void main()
執行結果
b0::display()
b1::display()
b2::display()
4樓:
cout後面的引號!
這個簡單的c語言程式,輸出結果為什麼和我預期的不一樣是我想錯了嗎,ubuntu64位
5樓:匿名使用者
考這類題和做這類題是沒有意義的,
因為這類組合++、--的在不同的編譯器下會得到不同的結果,本題在gcc編譯器下每個++、--都要運算,且從右向左結合,所從右向左運算。
++i, --i, i++, i--, -i++, -i--
7+1,7+1-1,8-1, (7+1),-(8-1),-8而微軟的編譯器會得到8,7,8,8,-8,-8而devc++會得到 8 8 7 8 -7 -8,細節未知
6樓:大大蟲
沒錯每次++和--操作後,i值自身也變化了,所以下一個操作值也變化
求c語言大神幫忙看一下,為什麼我手算的結果和程式的結果不一樣?
7樓:匿名使用者
輸入資料 vi, vo 你都定義成了浮點數型別,但是讀入的時候是按 %d 也就是整型讀的,這倆型別的二進位制編碼不統一,所以讀到的資料就不對。讀入的時候用 %f 就好了。
請高手幫我看一下這個C 小程式出錯在哪
歡迎我的答案。修改三處。1 void f int int f int 2 void f int n int f int n 3 cout f 函式f 返回為void,不能做 或 運算。會c 的大俠來幫忙看看 小弟新學c 兩天,今天試著編個小程式 出現了錯誤,希望大俠幫忙看看 if m x else ...
請高手看一下這個C程式問題
如果你打算密碼長度為6位,就應該把兩個字元陣列長度定義為7,最後一個元素用於儲存字串結束標誌。strcmp 函式是以字串結束標誌為準的。即變數定義行修改如下 char p 7 t 7 c t 6 改成t 6 給你一個示例 void main q 6 printf d strcmp p,q 輸出0 但...
能幫我看一下這個電路題嗎,能幫我看一下這個電路嗎,是一個秒錶計時器
解 根據kcl,中間5 電阻的電流為 i1,如上圖。kvl 1 i1 5 i1 16,i1 4 a 設受控電流源兩端電壓為u,與其電流2i1也是非關聯參考方向。u 5i1 5 4 20 v kvl u u 5 2i1,帶入引數 u 20 5 2 4 u 60 v 1 電阻消耗功率 p1 i1 1 4...