私は C++ を学んでおり、スタックとヒープ メモリを使用して Vector3D クラスを実装するタスクが割り当てられています。偶然にも、オーバーロード + メソッドに渡される Vector3DStack オブジェクト v の保護されたメンバー フィールド x、y、および z にアクセスできることに気付きました。
class Vector3DStack
{
public:
Vector3DStack(double, double, double);
double getMagnitude() const;
double getX() const;
double getY() const;
double getZ() const;
Vector3DStack operator + (Vector3DStack);
Vector3DStack operator - (Vector3DStack);
Vector3DStack operator * (double);
Vector3DStack operator / (double);
Vector3DStack operator % (Vector3DStack);
double operator * (Vector3DStack);
protected:
double x, y, z;
};
保護されていると宣言されている場合、C++ が Vector3DStack パラメータ v の x、y、および z 保護フィールドへのアクセスを許可するのはなぜですか? v.getX()、v.getY()、および v.getZ() を使用する必要があると予想していました。
Vector3DStack Vector3DStack::operator + (Vector3DStack v)
{
return Vector3DStack (x + v.x, y + v.y, z + v.z);
}
どうもありがとう、ジョージ