c++从new转换为instance

  • 本文关键字:instance 转换 new c++ c++
  • 更新时间 :
  • 英文 :


有一个问题让我很困惑

我创建了一个新的变量

Foo *a=new Foo();

然后我声明了一个实例变量

Foo b;

现在我想将新变量转换为实例变量,所以我做了

b.setValue0(a->getValue0());
b.setValue1(a->getValue1());
b.setValue2(a->getValue2());

有没有更简单快捷的方法?

您可以使用复制构造函数:

Foo b(*a);

当然假设复制对象是允许的。

"有更简单、更快的方法吗?"

您可以为Foo 声明一个赋值运算符

 Foo& operator=(const Foo&);

这样你就可以写了

 b = *a;

另一种选择是提供一个复制构造函数

 Foo(const Foo&);

这允许直接初始化b

 Foo b(*a);

您应该注意,编译器将自动为您生成这些操作,除非您将其中任何一个声明为自己的操作,或者使用参数声明特殊构造函数。

您可以使用带有const参数引用的复制构造函数。保证复制构造函数不会更改它是常量。

class Foo{
    public:
        . . .
        // copy constructor
        Foo(const Foo &b) 
        {
           value0 = b.value0;
           value1 = b.value1;
        }
}
//=== file main_program.cpp ====================================
. . .
Foo fooObj;                        // calls default constructor
Foo anotherFooObj = fooObj;        // calls copy constructor.

最新更新