C 建構函式深入理解

2022-08-30 02:00:12 字數 2543 閱讀 1976

01_初始化引數列表.cpp

#include

#include

#include

using

namespace

std;

struct student

}//拷貝建構函式定義

//拷貝建構函式的有效引數,必須是該類的物件的引用

#if 1

// student(student & s,int class_no=1)

#else

name = s.name;

#endif

age=s.age;score=s.score;

}#endif

~student()

};//end class student

int get_stu_age(student &s)

student stu1(1001,"lisi",20,100);

student & get_stu()

//如果函式的引數和返回值是類型別的物件,那麼在實參傳遞和函式返回時,會發生拷貝建構函式的呼叫;

//如果想避免此類呼叫帶來的巨大開銷,可以使用引用

int main()

02_default.cpp

#include

#include

#include

using

namespace

std;

struct student

age=a;score=s;

}//拷貝建構函式定義

//拷貝建構函式的有效引數,必須是該類的物件的引用

#if 1

// student(student & s,int class_no=1)

#else

name = s.name;

#endif

age=s.age;score=s.score;

}#endif

~student()

};//end class student

int get_stu_age(student &s)

student stu1(1001,"lisi",20,100);

student & get_stu()

//如果函式的引數和返回值是類型別的物件,那麼在實參傳遞和函式返回時,會發生拷貝建構函式的呼叫;

//如果想避免此類呼叫帶來的巨大開銷,可以使用引用

int main()

03_deleted.cpp

#include

#include

#include

using

namespace

std;

struct student

age=a;score=s;

}student(student & s)

age=s.age;score=s.score;

}//delete是禁止某類引數傳遞的建構函式使用

student(const

string s)=delete;

/**/

~student()

};//end class student

int main()

04_explicit.cpp

#include

#include

#include

using

namespace

std;

struct student

age=a;score=s;

}//explicit要求建構函式必須直接初始化的方式呼叫,不允許隱式轉換

// explicit

student(const student & s)

age=s.age;score=s.score;

}//delete是禁止某類引數傳遞的建構函式使用

student(const

char* n)

}~student()

explicit

void show_stu_name(const student &s)

05_多引數初始化.cpp

#include

using

namespace

std;

struct a;

struct b;

struct c

cout

; cout

<1,2,3,4,5};

cout

<0]cout

<" ";

cout

<1,2,3,4,5};

cout

<<"b.a="

<<"b.b="

<<"b.c="

<<"b.d="

<<"b.e="

<5,6,7,8,9};

cout

0;}

深入理解各種建構函式

include includeusing namespace std class test else test const test t else test operator const test t pdata new char strlen t.pdata 1 strcpy pdata t.pd...

深入理解js建構函式

在j ascript中,建立物件的方式包括兩種 物件字面量和使用new表示式。1.1物件字面量是一種靈活方便的書寫方式,例如 var o1 這樣,就用物件字面量建立了乙個物件o1,它具有乙個成員變數p以及乙個成員方法alertp。這種寫法的缺點是 每建立乙個新的物件都需要寫出完整的定義語句,不便於建...

深入理解c 之struct建構函式

是否曾好奇struct定義的資料結構型別,當我拷貝構造時,或者賦值操作時會發生什麼?倘若我結構中存在指標引用物件時,又能否正確處理?帶著這些疑問,我們來對struct的建構函式進行研究,以解答以下幾個疑問 1 何時編譯器會自動為struct合成建構函式 2 如何能保證攜帶指標引用物件的struct正...