C ++这个在构造函数中?

时间:2011-08-02 21:40:35

标签: java c++ constructor this

  

可能重复:
  c++ call constructor from constructor

如何在c ++中执行“self”(this)赋值?

爪哇:

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

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

它是否仅与this->(constructor of point that takes x, constructor of point that takes y);相似?

3 个答案:

答案 0 :(得分:8)

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

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

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

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

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); }

答案 1 :(得分:2)

如果我理解这个Java代码的意思(一个构造函数依赖于同一个类的另一个构造函数来完成这项工作):

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

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

class Point {

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

答案 2 :(得分:0)

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

如果你想这样做,你应该将构造函数逻辑放在init方法中,并从所有构造函数中调用它。