1 c const 修飾 建構函式

2021-08-26 03:02:36 字數 2633 閱讀 7915

//等號右邊都是物件的時候是拷貝,等號右邊是數字是值的時候是構造;

1.乙個物件給另外乙個物件初始化時

1)maker m1;

maker m2=m1;

2)maker m3(m2);

2.實參個形參賦值

void (maker m)

3.函式返回值

maker ()

1)debug下呼叫拷貝

其他情況下不會呼叫,只是把return 出來的空間給出來

1自己寫了拷貝建構函式,編譯器不會提供任何的建構函式

2自己寫了有參建構函式,編譯器不會提供無引數建構函式,提供拷貝建構函式

1先呼叫成員物件的建構函式(析構函式相反)
淺拷貝:c++

編譯器只會簡單的拷貝,如果在建構函式中出現了開闢空間,指標等操作注意使用深拷貝

深拷貝:拷貝指標指向的那塊空間

1匿名物件的生命週期在本行,對應匿名物件關鍵是要看接受他的時機
1)普通成員變數:儲存於物件中,與struct變數有相同的記憶體布局和位元組對齊方式

2)靜態成員變數:儲存於全域性資料區中

//靜態成員變數:

//1.屬於類,不屬於某個物件

//2.靜態成員函式統一管理靜態成員變數

//3.在內宣告,在類外定義(const修飾的除外)

//4.生命週期整個程式,作用域類內

//5.靜態成員變數也有許可權

//6.訪問:普通成員函式,靜態成員函式,類

為什麼空類是1?多個物件在例項化時,編譯器好區分那個物件

3、普通成員函式不佔類的大小

4、靜態成員函式不佔類的大小

5、靜態成員變數不佔類的大小

6、類的大小是普通成員變數決定

物件的大小也是普通成員變數決定

4常物件

1.常物件不能修改普通成員變數(mutable除外)

2.常物件呼叫常函式

void test01()

5常函式

//const 修飾成員函式,該函式就變成常函式

//const修飾的是指標,不能修改this指標指向的那塊空間內容(mutable除外)

void print_() const

在類中。。。 宣告的位置沒有關係

friend

void test01(maker &obj);//只是宣告不是類的成員函式

若b是a的友元類,則b類的所有成員函式都是a類的友元函式

友元類通常設計為一種 對資料 操作或者類之間傳遞訊息輔助類

/*

1.友元關係不能被繼承。

2.友元關係是單向的,類a是類b的朋友,但類b不一定是類a的朋友。

3.友元關係不具有傳遞性。類b是類a的朋友,類c是類b的朋友,但類c不一定是類a的朋友。

*/class maker

maker(int id, int age)

private:

int id;

int age;

};class student

void pirntmaker(maker &maker)

void printmaker2()

~student()

}public:

//通過類內的指標來訪問

maker *p;

};

#define _crt_secure_no_warnings

#include

using

namespace

std;

/*1.友元關係不能被繼承。

2.友元關係是單向的,類a是類b的朋友,但類b不一定是類a的朋友。

3.友元關係不具有傳遞性。類b是類a的朋友,類c是類b的朋友,但類c不一定是類a的朋友。

*/class maker

maker(int id, int age)

private:

int id;

int age;

};class student

void pirntmaker(maker &maker)

void printmaker2()

~student()

}public:

//通過類內的指標來訪問

maker *p;

};void test()

int main()

C const修飾函式 函式引數 函式返回值

在類中將成員函式修飾為const表明在該函式體內,不能修改物件的資料成員而且不能呼叫非const函式 為什麼不能呼叫非const函式?因為非const函式可能修改資料成員,const成員函式是不能修改資料成員的,所以在const成員函式內只能呼叫const函式。cpp view plain copy...

C const修飾函式 函式引數 函式返回值

在類中將成員函式修飾為const表明在該函式體內,不能修改物件的資料成員而且不能呼叫非const函式。為什麼不能呼叫非const函式?因為非const函式可能修改資料成員,const成員函式是不能修改資料成員的,所以在const成員函式內只能呼叫const函式。include using names...

C const修飾函式 函式引數 函式返回值

在類中將成員函式修飾為const表明在該函式體內,不能修改物件的資料成員而且不能呼叫非const函式。為什麼不能呼叫非const函式?因為非const函式可能修改資料成員,const成員函式是不能修改資料成員的,所以在const成員函式內只能呼叫const函式。include using names...