我虽然在函数调用之后所有发送到函数的rvalue参数都将被销毁。我完全搞砸了这个例子。有人可以帮我吗?也许是它解释的一些链接。
class Test
{
public:
Test(const char* name)
: ptr(nullptr)
{
ptr = name;
}
~Test()
{
printf("%s\n", ptr);
system("PAUSE");
}
const char* ptr;
};
int main()
{
Test t("Hello");
}
答案 0 :(得分:5)
"Hello"
是一个字符串文字。字符串是具有静态生命周期的基本值。与42
相同:该数字永远不会被销毁。
在其他新闻中:
将ptr
初始化为null,以及稍后分配给它的纳秒,令人困惑,因此可能浪费一些程序员的时间。只需将其初始化为应有的值。
最终暂停程序没有任何意义,可能是一个实际问题,所以不要这样做。要从某个IDE运行它时查看程序的输出,请使用适当的方法运行它。例如。在Visual Studio中 Ctrl + F5 。
对数据成员采用一些特殊的命名约定通常是个好主意。例如,ptr_
,或my_ptr
,或myPtr
,或mPtr
(我更喜欢第一个)。但是,不要像初学者那样使用_ptr
,因为这与用于保持C和C ++实现全局名称分开的约定冲突。