如何做 「自我」 在C(本)分配++?
的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(本)分配++?
的Java:
public Point(Point p) {
this(p.x, p.y);
}
會怎麼做這在C++?
它只是類似於this->(constructor of point that takes x, constructor of point that takes y);
?
如果您調用同一個類的另一個構造函數,它將創建一個新對象。
如果你想這樣做,你應該把構造函數邏輯放在init方法中並從所有構造函數中調用它。
在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)
{
...
}
};
雖然在這種情況下,它可能不值得這樣的麻煩。 – GManNickG
我沒有收到有關*較早*版本的評論。它總是使用* init *和類似函數的設計錯誤。 –
雖然要小心 - 委託構造函數不能在g ++中實現,即使使用--std = C++ 0x。我沒有意識到這一段時間一次... – Sean