C ++拷贝构造函数的指针

时间:2013-05-18 13:49:13

标签: copy-constructor pass-by-pointer

您好我想创建一个新的类变量,它是一个指针并通过复制构造函数初始化它。虽然我知道复制构造函数如何通过引用工作,但我无法弄清楚如何做到这一点。你能帮助我吗? 例如,我有这个定义:

class A{
public:
 int a;
private:
};

在另一个代码段中,我执行以下操作:

A *object= new A;
A->a=10;

A *newobject= new A(*object);

但是我遇到了分段错误。你能帮助我吗? 我也尝试过:

 A *newobject= new A(&(*object));

但它也不起作用。

3 个答案:

答案 0 :(得分:2)

您的示例中的这些行甚至不应该编译:

A *object= new A;
A.a=10;

你的意思是

Foo *object = new Foo;
object->a = 10;

右?

已编辑添加:

当您通过@Alok Save尝试the code posted时会发生什么?

答案 1 :(得分:1)

使用这种简单的示例,使用默认的位智能复制构造函数的以下工作正常。

简单类看起来像

class Bclass {
public:
    int iValue;
};

使用复制构造函数的代码如下所示:

Bclass *pObject = new Bclass;
pObject->iValue = 10;

Bclass *pObject2 = new Bclass (*pObject);

使用Microsoft Visual Studio 2005,以上工作正常。

另见Implementing a Copy Constructor

另见Copy constructor for pointers to objects

答案 2 :(得分:0)

由于类名是Foo而不是A,因此应该创建一个Foo对象。

class Foo{
  public:
  int a;
  private:
}; 

 Foo *object= new Foo;
 object->a=10;

现在因为object是指向类Foo的指针,所以 - >应该使用运算符。