由於一些遺留的C代碼,我有以下POD struct
定義2D座標;和C++ class
以便從它繼承以提供各種操作:初始化是POD的基類struct
struct coord
{
double x;
double y;
};
class CoordClass : public coord
{
// Contains functions like...
const CoordClass& operator+=(const CoordClass& rhs)
{
x += rhs.x;
y += rhs.y;
return *this;
}
double Magnitude() const { return std::sqrt(x*x + y*y); }
};
目前,CoordClass
限定了構造:
CoordClass(double xx, double yy) { x = xx; y = yy; }
鑑於x
和y
是POD基struct coord
的成員,是它可以將該構造函數編寫爲初始化列表和空主體?考慮到C++ 03和C++ 11的答案對我很感興趣。
啊!而且,雖然我不能使用'= default;'(MSVC),但我認爲用戶定義的默認構造函數類似的結構仍然是_standard-layout_?因此,只要構造函數是'#ifdef __cplusplus'守護,它應該互操作良好? – Chowlett