我正在学习 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);
}
非常感谢,乔治