7 建立物件時該用 還是 ?

2021-08-11 14:54:36 字數 682 閱讀 7731

本文主要介紹在c++11標準中應該用怎樣的語法建立並初始化物件

1.新標準下,初始化物件主要有3種方式:」()」、」=」、」{}」

int x(0);

int x = 0;

int x; //int x = ;通常和前面一樣

「=」在建立物件時使用不是乙個好的選擇,因為這會讓人有種「賦值」發生的錯覺,請看下面**

widget w1; //這裡呼叫預設建構函式

widget w2 = w1;//這裡不是賦值!實際上呼叫了拷貝建構函式!

w1 = w2;//這裡是賦值函式,呼叫了 operator=

2.c++11提出一種統一初始化方法(也叫大括號初始化)

用離散值初始化stl

//c++11 初始化,這在c++98中是不可以實現的

std::vector

v1 ;

用於類的靜態成員預設初始化

class

widget;//ok

int y = 0;//ok

int z(0);//wrong! expected identifier before numeric constant

{}始終要匹配引數為initializer_list的建構函式

C 在堆上建立物件還是在棧上建立物件

對於 object obj obj是在棧上分配的嘛?其實,這個語句的含義是,使物件obj具有 自動儲存的性質 意思就是這個物件的儲存位置取決於其宣告所在的上下文。如果這個語句出現在函式內部,那麼它就在棧上建立物件。如果這個語句不是在函式內部,而是作為乙個類的成員變數,則取決於這個類的物件是如何分配的...

電動車爬坡時究竟應該用最快檔還是用最慢檔?

電動車爬坡時究竟應該用最快檔還是用最慢檔?答 電動自行車的工作原理容易被人們誤解為汽車原理,因為汽車啟動後爬坡不可開快檔。1 比如汽車有四個檔,自動檔就不需要手動檔的那樣,還要轉到最低檔 汽車爬高用低檔的原理就是變換扭矩,說個比方猶如廣場大鐘原理,秒針跳動可用手阻止,而時針的動力將人吊著還能執行,它...

C 堆還是棧上建立物件

如果需要在堆上建立物件,要麼使用new運算子,要麼使用malloc系列函式。這點沒有異議。真正有異議的是下面的 c 1 object obj 此時,obj是在棧上分配的嗎?要回答這個問題,我們首先要理解這個語句是什麼意思。這個語句就是代表著,在棧上建立物件嗎?其實,這行語句的含義是,使物件obj具有...