SLN*_*SLN 7 c++ constructor initialization
我的问题是如何初始化具有初始化程序的成员数据,其中构造函数中还有一个默认参数.
class InputPlay {
public:
InputPlay(std::string s = "test" ) : _s(s) { };
private:
std::string _s = "default";
};
Run Code Online (Sandbox Code Playgroud)
问题:
调用构造时,变量_s是否会有2次初始化?又名_s将由字符串文字默认初始化,然后由构造函数中的默认参数"test"替换?
= "default";
是默认成员初始值设定项._s
如果您不提供初始化程序,它就是初始化程序.但是由于你确实提供了一个(_s(s)
),默认的初始化器永远不会进入播放器并且_s
只是初始化为s
.
如果非静态数据成员具有默认成员初始值设定项并且也出现在成员初始值设定项列表中,则会执行成员初始值设定项列表并忽略默认成员初始值设定项:
请注意,根据定义,某些内容只能初始化一次.如果它看起来像初始化两次,它通常被初始化然后分配另一个值.
归档时间: |
|
查看次数: |
154 次 |
最近记录: |