最新回答 / 不許丿摸我耳朵
可能你不太理解頭文件,頭文件其實(shí)就是一個(gè)庫,它封裝了很多函數(shù)和其他接口等各種聲明,現(xiàn)在你自己寫一個(gè)頭文件就相當(dāng)于你自定義一個(gè)申明#include "teacher.h" 只需要放在你的功能模塊里面,編譯的時(shí)候,在同一文件夾下編譯器會(huì)自動(dòng)尋找主函數(shù)(demo.cpp的main函數(shù))入口,進(jìn)行鏈接編譯,如果是在Linux下,往往還需要兩個(gè)cpp文件聯(lián)合編譯
2018-04-24
最贊回答 / 未來藍(lán)圖
區(qū)別:1、構(gòu)造函數(shù)的函數(shù)名稱與類名同名,其他方法(函數(shù))名稱可以自定義。2、構(gòu)造函數(shù)僅在對(duì)象被創(chuàng)建時(shí)系統(tǒng)會(huì)根據(jù)給定的參數(shù)以及類中的構(gòu)造函數(shù)定義進(jìn)行選擇調(diào)用,如果類中沒有定義構(gòu)造函數(shù),系統(tǒng)默認(rèn)會(huì)提供一個(gè)無參構(gòu)造空函數(shù),什么都不會(huì)做,只是滿足接口要求,構(gòu)造函數(shù)不能被顯式調(diào)用。其他函數(shù)根據(jù)程序員需要而調(diào)用,且必須顯式調(diào)用。3、由于對(duì)象創(chuàng)建后,系統(tǒng)必須返回新建對(duì)象的地址,賦值給指針變量(C++,C#中是將引用賦值給對(duì)象變量,其實(shí)一樣,內(nèi)部也是對(duì)象地址),那么換句話說,返回接口被系統(tǒng)占用了,因此構(gòu)造函數(shù)就不能返回任...
2018-03-26
最贊回答 / 不斷進(jìn)取
棧:是由編譯器在需要時(shí)自動(dòng)分配,不需要時(shí)自動(dòng)清除的變量存儲(chǔ)區(qū)。通常存放局部變量、函數(shù)參數(shù)等。堆:是由new分配的內(nèi)存塊,由程序員釋放(編譯器不管),一般一個(gè)new與一個(gè)delete對(duì)應(yīng),一個(gè)new[]與一個(gè)delete[]對(duì)應(yīng)。如果程序員沒有釋放掉, ? ? ? ?資源將由操作系統(tǒng)在程序結(jié)束后自動(dòng)回收。
2018-03-25
最贊回答 / SKY寒恒
因?yàn)轭愔卸x的m_iScore僅僅只是聲明,并沒實(shí)例化,沒有實(shí)例化就沒有存儲(chǔ)空間,那么m_iScore就不能初始化;只有類實(shí)例化成對(duì)象,編譯器才會(huì)給類中的數(shù)據(jù)成員分配存儲(chǔ)空間。我也是剛學(xué),回答得不正確的話,請(qǐng)多多包涵!
2018-03-18
最新回答 / B_L
為對(duì)象申請(qǐng)空間需要在后面加個(gè)括號(hào),比如:Student *str = new Student(); 但是為普通類型申請(qǐng)內(nèi)存,可以沒有。如果加了括號(hào)則是初始化方法的一種,如:int *p=new int(2); //也就是*p=2;
2018-03-05
最贊回答 / 獨(dú)秀一方
如果是void main()就不能有返回值,再return編譯器就會(huì)報(bào)錯(cuò)。而int main(void)是不需要參數(shù)的意思,因?yàn)閕nt main()實(shí)際上是int main(int argc, char *argv[]) 的縮寫需要參數(shù),argc為給程序的參數(shù)的個(gè)數(shù),argv中保存的是給函數(shù)的參數(shù),都是字符串。所以int main(void)和int main(int argc, char *argv[])都需要返回值。
2018-03-04