小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

c++類(lèi)中成員變量的初始化總結(jié)

 kylin_1983 2014-07-11

關(guān)于這個(gè)問(wèn)題是引起來(lái)源于一則面試問(wèn)題:引用型成員變量如何初始化?

回答的不是很確定,于是對(duì)這個(gè)問(wèn)題研究一下。

 

1、普通的變量:一般不考慮啥效率的情況下 可以在構(gòu)造函數(shù)中進(jìn)行賦值??紤]一下效率的可以再構(gòu)造函數(shù)的初始化列表中進(jìn)行。

class CA
{
public:
 int data;
 ……
public:
 CA();
 ……

};

CA::CA():data(0)//……#1……初始化列表方式
{
 //data = 0;//……#1……賦值方式
};

 

2、static 靜態(tài)變量:

static變量屬于類(lèi)所有,而不屬于類(lèi)的對(duì)象,因此不管類(lèi)被實(shí)例化了多少個(gè)對(duì)象,該變量都只有一個(gè)。在這種性質(zhì)上理解,有點(diǎn)類(lèi)似于全局變量的唯一性。


class CA
{
public:
 static int sum;
 ……
public:
 CA();
 ……

};

int CA::sum=0;//……#2……類(lèi)外進(jìn)行初始化


3、const 常量變量:
const常量需要在聲明的時(shí)候即初始化。因此需要在變量創(chuàng)建的時(shí)候進(jìn)行初始化。一般采用在構(gòu)造函數(shù)的初始化列表中進(jìn)行。

class CA
{
public:
 const int max;
 ……
public:
 CA();
 ……
};

CA::CA():max(100)
{
 ……
}

4、Reference 引用型變量:
引用型變量和const變量類(lèi)似。需要在創(chuàng)建的時(shí)候即進(jìn)行初始化。也是在初始化列表中進(jìn)行。但需要注意用Reference類(lèi)型。

class CA
{
public:
 int init;
 int& counter;
 ……
public:
 CA();
 ……
};

CA::CA():counter(&init)
{
 ……
}


5、const static integral 變量:
對(duì)于既是const又是static 而且還是整形變量,C++是給予特權(quán)的??梢灾苯釉陬?lèi)的定義中初始化。short可以,但float的不可以哦。
class CA
{
public:
 //static const float fmin = 0.0;// only static const integral data members can be initialized within a class
 const static int nmin = 0;
 ……
public:
 ……

};

總結(jié)起來(lái),可以初始化的情況有如下四個(gè)地方:
1、在類(lèi)的定義中進(jìn)行的,只有const 且 static 且 integral 的變量。
2、在類(lèi)的構(gòu)造函數(shù)初始化列表中, 包括const對(duì)象和Reference對(duì)象。
3、在類(lèi)的定義之外初始化的,包括static變量。因?yàn)樗菍儆陬?lèi)的唯一變量。
4、普通的變量可以在構(gòu)造函數(shù)的內(nèi)部,通過(guò)賦值方式進(jìn)行。當(dāng)然這樣效率不高。

自己整理。如有問(wèn)題,請(qǐng)指正。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多