功能参数寿命

时间:2016-11-16 09:47:21

标签: c++

我虽然在函数调用之后所有发送到函数的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");
}

1 个答案:

答案 0 :(得分:5)

"Hello"是一个字符串文字。字符串是具有静态生命周期的基本值。与42相同:该数字永远不会被销毁。

在其他新闻中:

  • ptr初始化为null,以及稍后分配给它的纳秒,令人困惑,因此可能浪费一些程序员的时间。只需将其初始化为应有的值。

  • 最终暂停程序没有任何意义,可能是一个实际问题,所以不要这样做。要从某个IDE运行它时查看程序的输出,请使用适当的方法运行它。例如。在Visual Studio中 Ctrl + F5

  • 对数据成员采用一些特殊的命名约定通常是个好主意。例如,ptr_,或my_ptr,或myPtr,或mPtr(我更喜欢第一个)。但是,不要像初学者那样使用_ptr,因为这与用于保持C和C ++实现全局名称分开的约定冲突。