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

分享

C++構(gòu)造函數(shù)的調(diào)用順序

 wlk8611 2012-06-10

http://blog.163.com/hbu_lijian/blog/static/12612915320125935016617/

1、如果類里面有成員類,成員類的構(gòu)造函數(shù)優(yōu)先被調(diào)用;

2、創(chuàng)建派生類的對象,基類的構(gòu)造函數(shù)函數(shù)優(yōu)先被調(diào)用(也優(yōu)先于派生類里的成員類);

3、 基類構(gòu)造函數(shù)如果有多個(gè)基類則構(gòu)造函數(shù)的調(diào)用順序是某類在類派生表中出現(xiàn)的順序而不是它們在成員初始化表中的順序;

4、成員類對象構(gòu)造函數(shù)如果有多個(gè)成員類對象則構(gòu)造函數(shù)的調(diào)用順序是對象在類中被聲明的順序而不是它們出現(xiàn)在成員初始化表中的順序;

5、派生類構(gòu)造函數(shù),作為一般規(guī)則派生類構(gòu)造函數(shù)應(yīng)該不能直接向一個(gè)基類數(shù)據(jù)成員賦值而是把值傳遞給適當(dāng)?shù)幕悩?gòu)造函數(shù)否則兩個(gè)類的實(shí)現(xiàn)變成緊耦合的(tightly coupled)將更加難于正確地修改或擴(kuò)展基類的實(shí)現(xiàn)。(基類設(shè)計(jì)者的責(zé)任是提供一組適當(dāng)?shù)幕悩?gòu)造函數(shù))

#include <iostream>

class A;
class B;

class A
{
private:
public:
A()
{
std::cout << "A()" << std::endl;
}
};

class B
{
private:
public:
B()
{
std::cout << "B()" << std::endl;
}
};

class C:public B
{
private:
A a;
public:
C()
{
std::cout << "C()" << std::endl;
}
};

int main(int argc, char *argv[])
{
C c;
std::cout << "Application run successfully" << std::endl;
return 0;
}

輸出結(jié)果:
B()
A()
C()

更改程序如下:
#include <iostream>

class A;
class B;
class C;

class A
{
private:
public:
A(C &pC)
{
std::cout << "A()" << std::endl;
}
};

class B
{
private:
public:
B(void *pB)
{
std::cout << "B()" << std::endl;
}
};

class C:public B
{
private:
A a;
public:
C():B(this),a(*this)
{
std::cout << "C()" << std::endl;
}
};

int main(int argc, char *argv[])
{
C c;
std::cout << "Application run successfully" << std::endl;
return 0;
}
運(yùn)行結(jié)果:
B()
A()
C()

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

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多