在 C++ 0x 中,统一初始化允许使用圆括号 () 和花括号 {} 来初始化变量。但是,在某些情况下,只能使用圆括号 (),而不能使用花括号 {}。
具体来说,当初始化的对象是一个非聚合类型,并且该类型没有提供初始化列表时,只能使用圆括号 ()。这是因为圆括号 () 可以用来表示值的列表,而花括号 {} 则用于表示初始化列表。
例如,考虑一个类型为 std::vector<int>
的变量,由于该类型没有提供初始化列表,因此只能使用圆括号 () 进行初始化:
std::vector<int> v(3, 4); // 使用圆括号 () 初始化
而如果该类型提供了初始化列表,则可以使用花括号 {} 进行初始化:
std::vector<int> v{3, 4, 5}; // 使用花括号 {} 初始化
需要注意的是,当使用花括号 {} 初始化时,如果初始化列表中只有一个元素,则需要在该元素后面加上逗号,以避免与圆括号 () 的初始化方式混淆:
std::vector<int> v{3,}; // 使用花括号 {} 初始化,注意逗号
总之,在 C++ 0x 中,统一初始化允许使用圆括号 () 和花括号 {} 来初始化变量,但在某些情况下,只能使用圆括号 (),而不能使用花括号 {}。
领取专属 10元无门槛券
手把手带您无忧上云