c 類的預設八種函式

2021-09-07 15:13:47 字數 1799 閱讀 3654

1

#define _crt_secure_no_warnings

23 #include 4 #include

5 #include 6

7class

myclass8;

2223

//預設帶參建構函式

24 myclass::myclass(const

char *str)25

30else

3135 std::cout << "

預設帶參建構函式

"<< "

this addr:

"<< this

<<:endl>

3738

//預設析構函式

39 myclass::~myclass(void)40

46 std::cout << "

預設析構函式

"<< "

this addr:

"<< this

<<:endl>

4849

//預設拷貝建構函式

50 myclass::myclass(const myclass &m)51

56else

5761 std::cout << "

預設拷貝建構函式

"<< "

this addr:

"<< this

<<:endl>

6364

//預設過載賦值運算子函式

65 myclass & myclass::operator =(const myclass &m)66

74else

7579

}80 std::cout << "

預設過載賦值運算子函式

"<< "

this addr:

"<< this

<<:endl>

81return *this;82

}8384//

預設過載取址運算子函式

85 myclass * myclass::operator &()

8690

91//

預設過載取址運算子const函式

92 myclass const * myclass::operator &() const

9397

98//

預設移動建構函式

99 myclass::myclass(myclass &&m):

100m_pdata(std::move(m.m_pdata))

101105

106//

預設過載移動賦值操作符函式

107 myclass & myclass::operator =(const myclass &&m)

108118

119void

funa(myclass a)

120123

124void mytest1(void

)125

132133

void mytest2(void

)134

144145

void mytest3(void

)146

152153

void mytest(void

)154

163164

int main(int argc, char * ar**, char *envp)

165

執行結果:

C 類的預設函式

使用者自定義乙個類,簡單的可以看成是乙個新的型別,與c 標準裡面的資料型別使用差不多。但在物件導向程式設計中,我們知道任何乙個物件必須要通過建構函式才能建立,以及可以將乙個物件拷貝給另乙個物件,將乙個物件作為引數傳遞給乙個函式等。c 預設函式 既然是預設函式,那也就是說即便類裡面乙個成員函式沒有,這...

C 類的預設函式

每個成員函式都有乙個指標形參,它的名字是固定的,稱為this指標,this指標是隱式的。但是建構函式沒有這個隱含的this指標。編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞給成員函式的第乙個形參this指標。編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞...

C 類預設函式

在c 中,乙個類有八個預設函式 預設建構函式 預設拷貝建構函式 預設析構函式 預設過載賦值運算子函式 預設過載取址運算子函式 預設過載取址運算子const函式 預設移動建構函式 c 11 預設過載移動賦值操作符函式 c 11 只是宣告乙個空類,不做任何事情的話,編譯器會自動為你生成乙個預設建構函式 ...