可以从方法中调用类构造函数吗?

ysa*_*sap 0 c++ methods constructor class

如果我有以下课程:

class A {
private:
    int *x;
public:
    A() { x = new int; *(A::x) = 0; }
    A(const int *y) { x = new int; *(A::x) = *y; }
    ~A() { delete x; }
    void operator = (const int *y) { A(y); }
};

int main() {
    A a;
    int y = 3;
    a = &y;

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

我希望赋值语句调用=方法,而方法又x通过调用相应的构造函数来设置成员.但是,似乎在赋值之后,值x仍然NULL是,y并且未分配值.

那么,从一个方法调用构造函数是一个定义的操作吗?如果是这样,我的代码中会错过什么?使用调试器我验证了实际上正在调用构造函数,只是一旦流从构造函数返回=方法,就不会保留复制的值.

Jon*_*ely 6

不可以.构造函数用于创建对象,不能在现有对象上再次调用它们.

对象从一生开始,终生(最多)一次.你想要做的就像出生两次,这听起来很混乱.