代码之家  ›  专栏  ›  技术社区  ›  Ismail Marmoush

C++如何实现?函数_x(新对象1)

  •  0
  • Ismail Marmoush  · 技术社区  · 15 年前

    嗨,我想做下一个

    而不是

    MyClass object;
     function_x (object);
    

    我想

    function_x ( new object );
    

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


    回答 function_x (MyClass() )

    新编辑感谢您的快速回答。我问错了我该怎么问

    C++中创建的临时变量及其答案

    3 回复  |  直到 14 年前
        1
  •  3
  •   Eli Bendersky    15 年前

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

    但您可以这样做:

    void function_y(MyClass* ptr)
    {
      // Do something
    }
    
    // Then call
    function_y(new MyClass);
    

    注意以下几点:

    1. 的默认构造函数 MyClass 在创建时调用
    2. function_y 必须将指针放在可访问的位置,以避免内存泄漏

    这是你需要的,还是其他什么?

        2
  •  0
  •   Igor Zevaka    15 年前

    new object 收益率 object* ,因此函数_x的签名应该是:

    void function_x(object* obj) {
    }
    

    你只能打电话给接线员 new 在类上,而不是类的实例上。

        3
  •  0
  •   Naveen    15 年前

    根据编辑,如果要创建临时对象,可以这样做: function_x (MyClass ()); . 注意,您不能修改这个临时对象,所以您的函数x应该使用const引用这个参数。