C++;在头文件或构造函数中初始化常量类成员变量? 我只想问一下,C++中,头文件或构造函数中初始化const类成员变量的最佳实践是什么?
谢谢:) 在头文件中: .h文件: 或 在构造函数中: .h文件: .cpp文件:C++;在头文件或构造函数中初始化常量类成员变量? 我只想问一下,C++中,头文件或构造函数中初始化const类成员变量的最佳实践是什么?,c++,constructor,header,initialization,member-variables,C++,Constructor,Header,Initialization,Member Variables,谢谢:) 在头文件中: .h文件: 或 在构造函数中: .h文件: .cpp文件: 如果使用C++11,则可以就地初始化。也可以在构造函数中初始化。初始化类内常量成员字段的两种方法: class MyClass{ public: const std::string myconst = "Hello World"; // in-place initialization C++11 }; class MyClass{ public: const std::string mycon
如果使用C++11,则可以就地初始化。也可以在构造函数中初始化。初始化类内常量成员字段的两种方法:
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
。它们并不完全相同,对于构造函数初始化,一个缺点是需要保持初始化顺序
此外,如果使用.cpp和.h,则可能需要始终切换到cpp以查找初始化值
这个问题已经在“构造函数中”的参数中得到了回答:
- 旧代码库的代码样式一致性
- 需要使用不同的编译器在不同的平台上构建代码
- 开发时可能减少编译时间。如果更改常量的值,将重新生成包含标头的所有单位
ExampleClass::ExampleClass() : string_member_variable_("Sample Text") {}
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";