所以我的问题是我想在给定的地址上创建新的对象。C++在方法中创建新对象
MethodA()
{
TreeNode* nodeResult = NULL;
initObject(nodeResult);
//nodeResult is NULL anyway
}
void initObject(TreeNode* obj)
{
if(obj == NULL)
{
obj = new TreeNode();
}
}
好像是创建新的对象,但在initObject
方法的括号结束时删除。
除了@ pw94是正确的答案,这是值得注意的是,对象尚未在你的代码删除了,你刚刚失去了指针。如果你在C++中调用'new'来创建一个对象,它将不会被删除,直到你在一个指针上调用'delete'。现代约定是使用'std :: shared_ptr'和'std :: unique_ptr'来避免必须尽可能手动完成。请仔细阅读它们以及背后的内存管理/所有权概念。 –
@ MatthewWalton的评论应该被添加到其中一个答案中。 –
指针没有什么特别之处。如果你考虑'void initNumber(int x){if(x == 0)x = 42; } void f(){int x = 0; initNumber(X);你会明白发生了什么事。 – molbdnilo