簡體   English   中英

如何在類中初始化C ++ 11本機指針和數組?

[英]How to initialize a c++11 native pointer and array in a class?

例如

class A
{
 int *p{};   // is this fine without giving the null pointer value 0?
 int p[3]{}; // is this fine without double braces {{ }}? std::array need.
};

我的測試表明它們通過了Intel C ++編譯器。 但是不確定它們在標准上是否正確?

是的,是的。

最好用nullptr顯式初始化,例如int *p = nullptr;

int p[3]{}將使用int {}初始化每個p。

從C ++ 11開始,可以使用統一的list-init語法以不同的方式初始化包括聚合(例如,數組類型)在內的任何類型的數據成員。 通過將一對空括號作為初始值設定項 ,您可以執行值初始化 但是您也可以執行其他類型的初始化。 還要注意,從C ++ 14開始,在所有情況下都可以省略聚合初始化中的嵌套括號。 因此, std::array<int, 3> arr{1, 2, 3}; 從C ++ 14開始就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM