int a(5); //直接初始化
int a=5; //複製初始化
(1)對於一般的內建型別,這兩種初始化基本上沒有區別。
(2)當用於類型別物件時,初始化的複製形式和直接形式有所不同:
直接初始化直接呼叫與實參匹配的建構函式(拷貝建構函式)
複製初始化首先使用指定建構函式建立乙個臨時物件,然後使用複製建構函式將那個臨時物件複製到正在建立的物件。
#include "stdafx.h"
#include
#include
using namespace std;
class test
test(int m,int n)
test(const test& a)
private:
int a,b;
};class matrix
/*matrix(int m,int n, const test& p):a(m),b(n),test(p){}// 走拷貝建構函式*/
matrix(){}
private:
int a,b;
test test;
};int main(int argc, char* argv)
直接初始化和複製初始化
關於這個問題,國內外都有許多爭論,但我至今未找到滿意的答案,至於為為什麼,這就是今天要說明的。可能大家都有看過c primer,我看的是第四版,中文版,英文水平不怎麼樣。其中第13章,描述說,複製建構函式可用於 1.根據另乙個同型別的物件顯式或隱式初始化乙個物件 2.複製乙個物件,將它作為引數傳遞給...
直接初始化和複製初始化
1 classtest ct1 ab 這條語句屬於直接初始化,它不需要呼叫複製建構函式,直接呼叫建構函式classtest const char pc 所以當複製建構函式變為私有時,它還是能直接執行的。2 classtest ct2 ab 這條語句為複製初始化,它首先呼叫建構函式classtest ...
C 直接初始化和複製初始化
在c 裡,物件初始化是乙個非常重要但又容易令人混淆的問題。這裡是自己的一些總結。一。初始化與賦值的含義 初始化 包括建立 或說定義 物件並且賦給初值。如果乙個物件只被建立而沒有被初始化,則該變數只能用於被賦值 賦值 擦除物件的當前值並用新值代替。二。內建型別 一 直接初始化 1.空初始化 即無引數無...