C++在Method中创建新对象

Fin*_*ize 1 c++

所以我的问题是我想在给定地址上创建新对象.

MethodA()
{
   TreeNode* nodeResult = NULL;
   initObject(nodeResult);
   //nodeResult is NULL anyway
}
void initObject(TreeNode* obj)
{
    if(obj == NULL)
    {
        obj = new TreeNode();
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来新对象已创建但在initObject方法括号末尾删除.

Sea*_*ean 6

这会失败,因为您的initObject方法想要修改调用者的变量,但是您要传递它的副本.将其更改为:

void initObject(TreeNode* &obj)
{
    if(obj == NULL)
    {
        obj = new TreeNode();
    }
}
Run Code Online (Sandbox Code Playgroud)

这将为initObject函数提供调用者变量的引用,并且在函数返回后调用者可以看到对它的任何赋值.


pw9*_*w94 5

您必须使用引用,因为指针是值类型

MethodA()
{
   TreeNode* nodeResult = NULL;
   initObject(nodeResult);
   //nodeResult is NULL anyway
}
void initObject(TreeNode* & obj)
{
    if(obj == NULL)
    {
        obj = new TreeNode();
    }
}
Run Code Online (Sandbox Code Playgroud)