功能参数寿命

Yur*_*kyi 0 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");
}
Run Code Online (Sandbox Code Playgroud)

Che*_*Alf 5

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


在其他新闻中:

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

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

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