已采納回答 / DoDream
是的,只有靜態(tài)常量整型數(shù)據(jù)成員才可以在類中初始化。靜態(tài)數(shù)據(jù)成員要在類外初始化常量數(shù)據(jù)成員和引用數(shù)據(jù)成員要在構(gòu)造函數(shù)基/成員初始值設(shè)定項(xiàng)列表中初始化
2015-10-27
已采納回答 / onemoo
直接在你的評論下回復(fù)有字?jǐn)?shù)限制,我再發(fā)一條回答好了。你前一次的錯誤是缺少函數(shù)定義,根本不能編譯。這次加上base的默認(rèn)構(gòu)造函數(shù)后,可以編譯并運(yùn)行了。但如果你只是加上base的默認(rèn)構(gòu)造函數(shù),沒有改別處的話,那這次的錯誤就在于:Big的拷貝構(gòu)造函數(shù)還是沒有做任何事!?且不說它并沒有拷貝a1的內(nèi)容,甚至也沒有初始化自己的成員變量。 這種情況下,Big的成員變量會被默認(rèn)初始化:也即是int v被默認(rèn)初始化為隨機(jī)值;base b就調(diào)用了自己的默認(rèn)構(gòu)造函數(shù),這樣b.k就是0(前一次就因?yàn)闆]有base的默認(rèn)構(gòu)造函數(shù),所...
2015-10-24
最贊回答 / onemoo
在使用一個類時,只需要提供類定義即可,無需知道類實(shí)現(xiàn),就可以進(jìn)行編譯。?一般類定義都是寫在 .h 文件中的,所以include .h文件即可。類定義相當(dāng)于定義了類可以進(jìn)行的操作,代碼只要知道了類定義就可以操作其成員。至于這些成員函數(shù)是怎么實(shí)現(xiàn)的,編譯器在編譯這個源文件時并不關(guān)心,所以無需知道類實(shí)現(xiàn)就可編譯。當(dāng)然要使整個程序能執(zhí)行,還是得實(shí)現(xiàn)相應(yīng)的成員函數(shù),只不過那也許是寫在其他cpp文件中的。這些寫在其他cpp文件中類的實(shí)現(xiàn)會被鏈接機(jī)制找到,最終鏈接成可執(zhí)行文件。為什么不能include .cpp:?在C...
2015-10-20
已采納回答 / onemoo
系統(tǒng)沒有幫你拷貝。拷貝構(gòu)造函數(shù)原型就是“那樣的函數(shù)名和形參”,這個函數(shù)才會被視為拷貝構(gòu)造函數(shù)。 程序在需要進(jìn)行拷貝構(gòu)造的時候就會調(diào)用這個函數(shù)來構(gòu)造類實(shí)例。大括號里就是這個函數(shù)的實(shí)現(xiàn),寫什么完全由你來決定,你打算怎樣拷貝構(gòu)造就怎樣寫好了。課程中只寫了一句輸出語句,是為了驗(yàn)證在哪些情況下調(diào)用拷貝構(gòu)造函數(shù)。 例子中的這個函數(shù)確實(shí)沒有拷貝任何成員變量。 用這個做示例似乎有點(diǎn)欠妥...
2015-10-16
已采納回答 / AAnonymous
C++這里括號可以不寫,因?yàn)檎{(diào)用的是無參構(gòu)造函數(shù),寫不寫都一樣如果重載了構(gòu)造函數(shù),需要調(diào)用有參數(shù)的括號就是必須的了,需要傳參數(shù)進(jìn)去Java/C#等,即是是調(diào)用默認(rèn)無參構(gòu)造函數(shù),括號也要寫的
2015-10-16
已采納回答 / onemoo
這個沒錯。p 是指向 TV類型 的指針,通過指針來訪問所指變量的成員應(yīng)該用 -> 運(yùn)算符。 直接通過變量訪問其元素才是用 .(點(diǎn)) 運(yùn)算符。也就是 p->type 相當(dāng)于 (*p).type
2015-10-15
已采納回答 / onemoo
難得看到一個用codeblocks的。這個類定義沒什么問題,報的這個錯誤不是代碼中的。?看起來應(yīng)該是鏈接時找不到鏈接庫,這一般是因?yàn)榻⒐こ滩粚ΑD憬⒐こ虝r選的是console application(控制臺應(yīng)用程序)嗎?
2015-10-14
已采納回答 / onemoo
這是個函數(shù),函數(shù)體后的尾大括號就標(biāo)志著這個函數(shù)的結(jié)束,后面無需再加上分號。一般分號標(biāo)志著語句的結(jié)束。所以你寫上分號的話,等于是兩個語句:一個完整的函數(shù) + 一個只有一個分號的空語句
2015-10-08