//等號右邊都是物件的時候是拷貝,等號右邊是數字是值的時候是構造;
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...