123得票7回答
如何在成员初始化列表中初始化数组成员

class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; };...

97得票3回答
一个私有构造函数什么时候不是私有构造函数?

假设我有一个类型,并且希望将其默认构造函数设置为私有。我可以编写以下内容:class C { C() = default; }; int main() { C c; // error: C::C() is private within this conte...

93得票8回答
C++0x中的窄化转换。这是我的问题,还是听起来像是一个破坏性的改变?

C++0x将会禁止下面这段代码以及类似的代码,因为它需要将一个双精度浮点数double缩小转换(也称为narrowing conversion)成一个整型int。int a[] = { 1.0 }; 我想知道这种初始化在实际代码中是否经常使用。如果进行更改,会有多少代码会出现问题?如果受到影响...

56得票3回答
删除默认构造函数。有时候仍然可以创建对象...

关于C++11统一初始化语法的天真、乐观和极其错误的看法 我认为自从C++11以来,用户定义的类型对象应该使用新的{...}语法来构造,而不是旧的(...)语法(除了针对std::initializer_list和类似参数的构造函数重载(例如std::vector:size ctor vs ...

48得票2回答
在std::array初始化中的花括号省略

假设有一个需要初始化的 std::array。如果使用双括号,那么这是可以的: std::array<int, 2> x = {{0, 1}}; std::array<int, 2> x{{0, 1}}; 在传统的聚合初始化中,使用单个大括号也可以,因为大括号省略...

47得票5回答
有没有可能防止聚合初始化成员的遗漏?

我有一个结构体,其中有许多相同类型的成员,就像这样struct VariablePointers { VariablePtr active; VariablePtr wasactive; VariablePtr filename; }; 问题在于,如果我忘记初始化结构体的一个...

36得票2回答
什么是聚合初始化?

第4章第231页的《Java编程思想(第2版)》中的“数组初始化”部分如下所述: 在C语言中,数组的初始化容易出错且繁琐。C++使用聚合初始化来使其更加安全。Java没有像C++那样的“聚合体”,因为在Java中一切都是对象。不过,Java有数组,并且支持数组初始化。 为什么在C语言中容易...

35得票1回答
具有非静态成员初始化器的类的C++11聚合初始化

是否符合标准:struct A { int a = 3; int b = 3; }; A a{0,1}; // ??? 这个类还算是聚合类吗? clang 可以接受这段代码,但是 gcc 不行。

32得票4回答
如何在添加自定义构造函数的同时保留聚合初始化?

如果我在结构体中不定义构造函数,我可以通过像这样选择某个值来初始化它:struct Foo { int x, y; }; Foo foo = {.y = 1}; 但如果我添加新的默认构造函数,那么我就会失去这个功能:struct Bar { int x, y; Bar...

29得票1回答
我能否在初始化列表中引用先前的成员?

假设我想引用已定义的initializer_list的成员,我能做到吗? 在Visual Studio和gcc中,此代码编译并输出预期结果:"13 55 ",我只是想知道它是否合法:const int foo[2] = {13, foo[0] + 42};