我只是想问一下在C ++,头文件或构造函数中初始化const类成员变量的最佳实践是什么?
谢谢:)
.h文件:
class ExampleClass{
public:
ExampleClass();
private:
const std::string& string_member_variable_ = "Sample Text";
}
或
.h文件:
class ExampleClass{
public:
ExampleClass();
private:
const std::string& string_member_variable_;
}
.cpp文件:
ExampleClass::ExampleClass() : string_member_variable_("Sample Text") {}
答案 0 :(得分:1)
如果使用C ++ 11,您可以就地初始化。您还可以在构造函数中初始化。在类中初始化const成员字段的两种方法:
class MyClass{
public:
const std::string myconst = "Hello World"; // in-place initialization C++11
};
class MyClass{
public:
const std::string myconst;
MyClass() : myconst("Hello World"){} // initialize const member in a constructor
};
当谈到非静态积分常数时,我会选择构造函数选项。在头文件中声明一个常量,并在源文件的构造函数内初始化它。 另一件事是这一部分:
const std::string& string_member_variable_ = "Sample Text";
错误,您的编译器会警告您:
引用成员初始化为不会持久的临时成员 构造函数退出后
改为使用const std::string
。
答案 1 :(得分:0)
它们都不是一样的,构造函数初始化的一个缺点是你需要保持初始化的顺序 此外,如果使用.cpp和.h,则可能需要始终切换到cpp以查找初始值。
已经回答了这个问题答案 2 :(得分:0)
“在构造函数中”的参数: