2 6 建構函式與類成員的初始化

2022-05-04 22:36:07 字數 1532 閱讀 2650

1、建構函式一大功能就是初始化成員變數

(1)預設建構函式不帶參,無初始化功能

(2)若無其他建構函式,則預設建構函式可以省略。但若有哪怕1個其他建構函式,則預設建構函式不能省,必須寫上。

(3)棧上分配物件時,若使用預設建構函式,則物件變數後面不加空的(),若用帶參構造才需要加(初始化引數)

2、c++的成員初始化列表

(1)一般用於帶參建構函式中,用來給屬性傳參賦值

(2)成員初始化列表和建構函式之間用冒號間隔,多個列表項之間用逗號間隔

(3)初始化列表可以替代建構函式內的賦值語句,達到同樣效果

3、建構函式使用引數預設值

(1)class宣告時可以給函式形參賦值乙個預設值,實際呼叫時若不傳參就使用預設值

(2)方法實現時形參可以不寫預設值,但是實際是按照宣告時的預設值規則的

(3)有預設值情況,要注意實際呼叫不能有過載歧義,否則編譯不能通過

(4)所有引數都帶預設值的建構函式,1個可以頂多個建構函式(舉例說明)

person.hpp

1

#ifndef __person_h__

2#define __person_h__

34 #include

5using

namespace

std;67

namespace

man8;38

39 } //

end of namespace man

4041

#endif

person.cpp

#include "

person.hpp

"#include

using

namespace

std;

//class的成員函式中可以引用class的成員變數,但是要考慮public和private這些

void man::person::eat(void

)void man::person::work(void

)

else

}void man::person::sleep(void)//

列印出物件的成員的值

void man::person::print(void

)man::person::person()

/*man::person::person(string myname):name(myname)

*/man::person::person(

string myname, int myage, bool

mymale) :name(myname), age(myage), male(mymale)

man::person::~person()

main.cpp

#include "

person.hpp

"using

namespace

man;

int main(void

)

c 建構函式初始化類成員

includeusing namespace std class box box box int h,int w,int l int box volume int main box box int h,int w,int l hight h width w length l int box volu...

類的初始化(建構函式)

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti intp int j int main int argc char argv 究其因 const物件或引用只能...

C 類成員變數和建構函式初始化

c 中各種型別的成員變數的初始化方法 c 成員變數 建構函式的初始化順序 c 類中成員變數的初始化總結 成員變數初始化位置 普通變數 建構函式的初始化列表中初始化或者建構函式體內進行賦值 static靜態變數 類外進行初始化 const常量變數 建構函式的初始化列表中初始化 引用變數 建構函式的初始...