【问题标题】:c++ how to ? function_x ( new object1 )c++怎么做?函数_x(新对象1)
【发布时间】:2010-02-01 03:51:54
【问题描述】:

嗨,我想做下一个

而不是

MyClass object;
 function_x (object);

我想要

function_x ( new object );

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


回答function_x (MyClass() )

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

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

【问题讨论】:

    标签: c++ function arguments new-operator


    【解决方案1】:

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

    你可以这样做:

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

    请注意以下几点:

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

    这是你需要的,还是别的什么?

    【讨论】:

    • 是的,对不起,我错误地将它写成了新对象,它应该是新类,但经过另一次搜索后,我搜索了一个名为(临时变量)的东西,这是我首先需要的,但不能冗长(请原谅我英语不好)所以临时对象类似于:function_x(MyClass())直接并且没有新运算符..当我在java中编程时,我们使用了new MyClass
    • +1。您可能想要添加更多关于内存泄漏、所有权概念以及平衡newdelete 的内容。
    【解决方案2】:

    new object 返回object*,所以 function_x 的签名应该是:

    void function_x(object* obj) {
    }
    

    而且你只能在类上调用操作符new,而不是类的实例。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2014-06-16
        • 1970-01-01
        • 2011-04-05
        • 2021-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        • 2013-08-17
        相关资源
        最近更新 更多