有一些博文提到,c++中的預設拷貝建構函式都是淺拷貝,即是通過該函式拷貝的物件只複製了原物件的指標(但我在qt上用以下**測試時,得到如下結果:
#include class a
};using namespace std;
int main(int argc, char *ar**)
};using namespace std;
int main(int argc, char *ar**)
{ a objecj1;
a objecj2 = objecj1;
a objecj3(objecj1);
cout<<"address of objecj1 ="<<&objecj1《結果如下:
address of objecj1 =0x61fe9c
address of objecj2 =0x61fe98
address of objecj3 =0x61fe94
value of objecj1_i =791976
value of objecj2_i =791976
value of objecj3_i =791976
address of objecj1_i =0x61fe9c
address of objecj2_i =0x61fe98
address of objecj3_i =0x61fe94
就是說,呼叫預設拷貝建構函式時,會直接將物件中的值賦給新的物件中的對應變數。
因此,如果物件中有指標變數的話,預設建構函式會把兩個物件中的該變數指向同乙個地方。
關於c 的預設拷貝建構函式
copy constructor inside the c object model 是本非常好的書,特別是幫助對類的構造和析構的理解。下面我要是的乙個就是關於c 預設的拷貝建構函式 一般我們用到它在以下情況 class a a aa default ctor a a aa copy ctor vo...
關於拷貝建構函式
首先不要使用vc編譯器來測試,看看這段 並猜想它會呼叫幾次建構函式和析構函式,最後再測試一下 在vc編譯執行後結果大失所望吧?不明白不要緊,vc這個整合的ide開發工具它的 博大精深 值得我們慢慢學習與積累,先看看下面我查詢的資料吧 一 拷貝建構函式 拷貝建構函式,是一種特殊的建構函式,它由編譯器呼...
關於拷貝建構函式
1 乙個物件用於給另外乙個物件進行初始化 賦值初始化 2 乙個物件作為函式引數,以值傳遞的方式傳入函式體 3 乙個物件作為函式返回值,以值傳遞的方式從函式返回 原則 對於凡是包含動態分配成員或包含指標成員的類都應該提供拷貝建構函式 對於第一種情況,先用乙個例子進行以下的說明 這個類的主要特點是包含指...