如何在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);
相似?
答案 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方法中,并从所有构造函数中调用它。