[英]C++ instantiate class comparison
class Myclass {
public:
int value;
Myclass(int a):value(a) {}
};
假設我在上面聲明並定義了一個類。 我正在嘗試實例化一個Myclass
實例。 以下哪種方式最有效?
(“更高效”是指代碼將執行得更快。)
Myclass c1(123);
Myclass c2=123;
Myclass c3{(123)};
Myclass c4{123}; // Is this called using "initialization list"?
我可能是錯的:
Myclass c1(123)
是直接初始化,應該是最快的。
Myclass c1{123}
在你的情況下也是直接初始化(不是列表初始化),它應該和第一個一樣快。 此外,該語法在 c++11 之前不可用。
Myclass c1 = 123
是一個副本初始化。 它會首先創建一個臨時的Myclass
對象,然后將其復制到c1
,因此它會比直接初始化慢。 但是,許多現代編譯器應該能夠對其進行優化。
不確定Myclass c1{(123)}
,但我相信它相當於Myclass c1{123}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.