如何在函数内部创建一个对象并将其返回给main()而不使用析构函数在c ++中删除它?

Min*_*ech 1 c++ object dynamically-generated

我有这门课:

class foo{

public:
    foo();
    foo(const int& var);
    foo(const foo& var);
    ~foo();

    foo retSumOf(const foo& var1, const foo& var2);

private:
    int a;
    char* x;

};
Run Code Online (Sandbox Code Playgroud)

这个meber功能:

foo foo::retSumOf(const foo& var1, const foo& var2){

    //Make somehow a foo object,
    //lets name it 'result'

    result.a = var1.a + var2.a;

    return (result);
}
Run Code Online (Sandbox Code Playgroud)

我想在main中这样做:

main(){

    foo a, b;
    foo* c;

    a.a = 1;
    b.a = 2;

    c = retSumOf(a, b);

    cout << "sum =" << c->a;

}
Run Code Online (Sandbox Code Playgroud)

无需调用(重载)复制构造函数!

C++中是否有一种方法可以从函数动态创建对象并返回其地址?没有构造函数在调用retSumOf()结束时删除它?

Seb*_*edl 5

为什么?

是的,你可以返回一个(智能)指针,就像杰里米说的那样,但你为什么要这样做呢?为什么不正确实现复制和移动功能?你已经有了一个构造函数; 按照五的规则,你应该实现其他四个函数,或者压制它们.