440得票14回答
构造函数中的这个奇怪的冒号成员(" : ")语法是什么意思?

最近我看到了一个类似以下的例子: #include <iostream> class Foo { public: int bar; Foo(int num): bar(num) {}; }; int main(void) { std::cout << ...

198得票6回答
一个const引用类成员会延长临时对象的生命周期吗?

为什么会这样呢? #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member...

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]; };...

123得票1回答
使用委托构造函数时的成员初始化

我开始尝试使用C++11标准,并找到这个问题,其中描述了如何在同一类中从另一个构造函数调用您的构造函数,以避免使用init方法或类似方法。现在我正在尝试使用以下代码: hpp: class Tokenizer { public: Tokenizer(); Tokenizer(std...

107得票9回答
C++构造函数名称后跟一个冒号有什么作用?

这个构造函数中的冒号运算符(“:”)是什么作用?它是否等同于 MyClass(m_classID = -1, m_userdata = 0);?class MyClass { public: MyClass() : m_classID(-1), m_userdata(0) { ...

82得票6回答
如何在构造函数中初始化常量字段?

假设我有一个C++类Foo和一个类Bar,必须使用构造函数创建,其中传递了一个Foo指针,并且该指针在Bar实例的生命周期中应保持不可变。正确的做法是什么? 实际上,我认为可以编写下面的代码,但它无法编译...class Foo; class Bar { public: Foo * ...

45得票3回答
在成员初始化列表中调用函数是否可以?

我的直觉告诉我不是这样的。我目前处于以下情况: class PluginLoader { public: Builder* const p_Builder; Logger* const p_Logger; //Others }; PluginLo...

38得票2回答
成员函数可以在成员初始化列表中用于初始化数据成员吗?

好的,成员变量可以在初始化列表中使用来初始化其他成员变量(需要注意初始化顺序等)。那么成员函数呢?具体来说,根据C++标准,这段代码是否合法? struct foo{ foo(const size_t N) : N_(N), arr_(fill_arr(N)) { //arr...

34得票4回答
构造函数中的初始化和赋值有什么区别?

让我们考虑以下课程 struct test1 { int a; int b; test1() : a(0), b(0) {} }; struct test2 { int a; int b; test2() { a = 0; b = 0; } ...

32得票3回答
构造函数中冒号后面的变量

我仍在学习C++,努力理解它。我正在查看一些代码,看到了这样的内容:point3(float X, float Y, float Z) : x(X), y(Y), z(Z) // <----- what is this used for { } 构造函数参数旁边的"x(X), y(Y)...