C++ 函数参数寿命
我认为在函数调用之后,发送给函数的所有右值参数都将被销毁。我完全搞砸了这个例子。有人能帮我吗?也许是一些它解释的链接C++ 函数参数寿命,c++,C++,我认为在函数调用之后,发送给函数的所有右值参数都将被销毁。我完全搞砸了这个例子。有人能帮我吗?也许是一些它解释的链接 class Test { public: Test(const char* name) : ptr(nullptr) { ptr = name; } ~Test() { printf("%s\n", ptr); system("PAUSE"); } cons
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");
}
“Hello”
是字符串文本。字符串是具有静态生存期的基本值。与42
相同:该数字永远不会被销毁
其他消息:
- 将ptr初始化为null,并在一纳秒后分配给它,这很复杂,因此可能会浪费程序员的时间。只需将其初始化为应有的值
- 在程序结束时暂停程序没有任何意义,可能是一个实际问题,所以不要这样做。要在从某个IDE运行程序时查看其输出,请使用适当的方式运行它。例如,Visual Studio中的Ctrl+F5
- 对数据成员采用一些特殊的命名约定通常是个好主意。例如,
,或ptr
,或myPtr
,或myPtr
(我更喜欢第一个)。但是,不要像一些初学者那样使用mPtr
OTP,因为这与用于保持C和C++实现全局名称分离的约定冲突。
“Hello”
是字符串文字。字符串是具有静态生存期的基本值。与42
相同:该数字永远不会被销毁
其他消息:
- 将ptr初始化为null,并在一纳秒后分配给它,这很复杂,因此可能会浪费程序员的时间。只需将其初始化为应有的值
- 在程序结束时暂停程序没有任何意义,可能是一个实际问题,所以不要这样做。要在从某个IDE运行程序时查看其输出,请使用适当的方式运行它。例如,Visual Studio中的Ctrl+F5
- 对数据成员采用一些特殊的命名约定通常是个好主意。例如,
,或ptr
,或myPtr
,或myPtr
(我更喜欢第一个)。但是,不要像一些初学者那样使用mPtr
OTP,因为这与用于保持C和C++实现全局名称分离的约定冲突。