关于java:C ++这个在构造函数中?

C++ this in constructor?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
c++ call constructor from constructor

如何在C++中完成"自我"(指派)任务?

爪哇:

1
2
3
 public Point(Point p) {
        this(p.x, p.y);
    }

如何在C++中做到这一点呢?

只有EDOCX1[0]会类似吗?


在C++0x中,可以使用委托构造函数:

1
Point(const Point &p) : Point(p.x, p.y) { }

注意,没有编译器完全支持C++0x;这个特殊的功能还没有在G++中实现。

在C++的较旧版本中,您必须委托给一个私有构造函数:

1
2
3
4
5
private:
    void init(int x, int y) { ... }
public:
    Point(const Point &p) { init(p.x, p.y); }
    Point(int x, int y)   { init(x, y); }


如果我理解这个Java代码的含义(依赖于同一个类的另一个构造函数来完成任务的构造函数):

1
2
3
public Point(Point p) {
    this(p.x, p.y);
}

这就是我如何在C++中表达同样的内容:

1
2
3
4
5
6
7
8
class Point {

    Point(const Point& p)
       : Point(p.x, p.y)
    {
        ...
    }
};


如果调用同一类的另一个构造函数,它将创建一个新对象。

如果要这样做,应该将构造函数逻辑放入in it方法中,并从所有构造函数调用它。