C++这个在构造函数中

C++ this in constructor?

本文关键字:构造函数 C++      更新时间:2023-10-16

可能重复:
c++从构造函数调用构造函数

如何在c++中完成"self"(this(赋值?

Java:

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

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

它是否仅类似于this->(constructor of point that takes x, constructor of point that takes y);

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

如果我理解你所说的Java代码(一个依赖于同一类的另一个构造函数来完成任务的构造函数(的意思:

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

这就是我在C++中表达相同内容的方式:

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

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

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