【发布时间】:2016-02-15 19:46:19
【问题描述】:
我正在处理我的一个项目,并且在为类创建构造函数时,我正在将一些变量设置为默认值。我将std::string 设置为NULL,它给了我一个错误。但是,当我在同一行定义 std::string 并将其设置为 NULL 时,它可以正常工作而不会出现任何错误。我想知道为什么
第一个例子
std::string text = NULL;
工作,并且
第二个例子
std::string text;
text = NULL;
没用。现在我知道你不应该将字符串设置为 NULL 或 0,但我偶然发现了这一点。
第一个示例是否调用了一个采用char* 的构造函数,并认为 0 是指向 char 的指针?我认为= 也调用了构造函数,所以我不明白为什么它们不能同时工作,除非std::string 专门重载= 运算符。
我正在使用 Microsoft Visual Studio Express 2013
【问题讨论】:
-
在
std::string text = NULL;行你没有遇到运行时错误吗? -
@mnciitbhu 不,我正在使用 Visual Studio 2013 Express。完全没有错误。
-
@mnciitbhu 所以两者之间显然存在某种差异
标签: c++ string constructor