舉例說明類 直接初始化VS複製初始化 未完待續

2021-06-22 09:22:08 字數 635 閱讀 9152

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.空初始化 即無引數無...