Tag: ctor初始值设定项

在构造函数初始值设定项中初始化成员数组

class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; 我相信原因是数组只能用=语法来初始化,即: int arr[3] = {1,3,4}; 问题 我怎么做我想做的事(即,在构造函数中初始化一个数组(不分配正文中的元素))。 这甚至有可能吗? C ++ 03标准对ctor初始值设定项中的聚合(包括数组)初始化有什么特别之处吗? 或者上述代码的无效是其他规则的必然结果吗? C ++ 0x初始化列表是否解决了这个问题? PS请不要提及向量,boost :: arrays以及它们对数组的优越性,我很清楚它们。

C ++构造函数名称后面的冒号是做什么的?

这个冒号运算符(“:”)在这个构造函数中做什么? 它相当于MyClass(m_classID = -1, m_userdata = 0); ? class MyClass { public: MyClass() : m_classID(-1), m_userdata(0) { } int m_classID; void *m_userdata; };