c ++怎么样? function_x(new object1)

时间:2010-02-01 03:51:55

标签: c++ function arguments new-operator

您好我想做下一个

而不是

MyClass object;
 function_x (object);

我想

function_x ( new object );

那么MyClass的结构能够做到这一点...... 如果我刚刚编译它,它会给我一个编译时错误


回答function_x (MyClass() )

新编辑感谢快速回答..我确实问过我应该问的问题

用C ++创建的临时变量和答案

3 个答案:

答案 0 :(得分:3)

在类上调用

new,而不是对象。它返回一个指针,所以除非function_x接受指针,否则这是不可能的。

你可以这样做:

void function_y(MyClass* ptr)
{
  // Do something
}

// Then call
function_y(new MyClass);

请注意以下几点:

  1. MyClass的默认构造函数在创建时被调用
  2. function_y必须将指针放在某个可访问的位置以避免内存泄漏
  3. 这是你需要的还是别的什么?

答案 1 :(得分:0)

new object返回object*,因此function_x的签名应为:

void function_x(object* obj) {
}

你只能在类上调用operator new,而不是类的实例。

答案 2 :(得分:0)

根据编辑,如果你想创建一个临时对象,你可以这样:function_x (MyClass ());。请注意,您无法修改此临时对象,因此您的function_x应该通过const-reference获取此参数。