構(gòu)造函數(shù)
一、inline(內(nèi)聯(lián))函數(shù)

什么情況下產(chǎn)生inline:函數(shù)在class的本體里面定義,就形成一種inline。在外頭定義就不是inline。但是,是不是最后真的變成inline function由編譯器決定。
inline有什么好處:快。有特點(diǎn)而沒(méi)有缺點(diǎn)。盡量都寫成inline那最好。
2-2不在本體內(nèi)定義,可以在前面加上inline。
二、access level(訪問(wèn)級(jí)別)

數(shù)據(jù)部分為private;函數(shù)看情況,被外界調(diào)用用public。
三、constructor(ctor,構(gòu)造函數(shù))

初值列是C++特殊寫法,是一種很好的寫法。
默認(rèn)值的意思是,如果在創(chuàng)建時(shí)沒(méi)有指明,就用默認(rèn)值。

構(gòu)造函數(shù)一定要跟類的名稱相同。沒(méi)有返回值類型。
//這部分代碼等價(jià)于
//可以這樣寫,但是效率差一些
complex (double r = 0, double i = 0) { re = r; im = i; }
三種創(chuàng)建對(duì)象的方式:

不帶指針的class多半不用寫析構(gòu)函數(shù)。
四、ctor(構(gòu)造函數(shù))可以有很多個(gè)——overloading(重載)

例如,real()這個(gè)函數(shù),同名但是參數(shù)不同,編譯后給編譯器看到的名稱是不一樣的,所以可以重載。
重載常常發(fā)生在構(gòu)造函數(shù)上,但是由于目前擁有的這個(gè)構(gòu)造函數(shù)已經(jīng)有初始值了,但是還是可以重載寫出其他的構(gòu)造函數(shù)。
目前構(gòu)造函數(shù)的1跟2兩者是沖突的,因?yàn)榈谝粋€(gè)函數(shù)有默認(rèn)參數(shù),當(dāng)創(chuàng)建c1的時(shí)候,沒(méi)有參數(shù),那么2(沒(méi)有參數(shù),符合c1要求)是候選人。complex類里有1,雖然有參數(shù),但是有默認(rèn)值,1也能被調(diào)用。編譯器不知道該調(diào)用1還是2,不可以這樣寫。
五、ctors放在private區(qū)
經(jīng)典寫法:?jiǎn)卫J?/p>
該例子寫了兩個(gè)寫法的構(gòu)造函數(shù)。外界只能用一份,調(diào)用時(shí)要用getInstance函數(shù)來(lái)創(chuàng)建。


浙公網(wǎng)安備 33010602011771號(hào)