在我的面向对象 C++ 类(class)中,我们必须编写我放在下面的这个类。
Point
class Point{
public:
Point( double x = 0, double y = 0 );
double getX() const;
double getY() const;
Point & setX( double x ); // mutator, returning reference to self
Point & setY( double y );
const Point & output() const;
double distance( const Point & other ) const;
private:
double xPoint, yPoint;
}; // class Point
我的问题是……我找不到关于函数 setX、setY 和输出应该如何工作的任何信息。它们与类本身是同一类型,我已经写下了我希望它们看起来像下面的样子。谁能告诉我我做错了什么,也许还有这些功能如何工作的更多细节? setX 函数应该改变对象中的 xPoint,setY 应该对 yPoint 做同样的事情,output 应该简单地输出它们。
Point & Point::setX( double x )
{
xPoint = x;
}
Point & Point::setY( double y )
{
Ypoint = y;
}
const Point & Point::output() const
{
cout << xPoint << yPoint;
}
最佳答案
只需在 setX 和 setY 的末尾添加 return *this;
:您将返回对对象的引用,例如,您可以这样做:p0.setX( 1.23).setY(3.45)
,当然 p0
是 Point 的一个实例。在输出函数中,在 xPoint 和 yPoint 之间放置一个分隔符,如空格。你说 它们与类本身是同一类型
:不要将变量类型与函数/方法返回的类型混淆:方法 setX
, setY
和 output
返回对它们所属类的实例的引用。注意输出返回的引用是const
,所以你可以这样做:
p0.setX(1.23).setY(3.45).output();
但不是:
p0.output().setX(1.23);
因为 setX
不是 const 方法(它没有声明它不会修改它所属的类实例中的数据)。
你可以调用:
double x = p0.output().getX();
因为 getX
是一个常量方法。
注意:我并不是说您应该以这种方式使用这些方法,而是要展示您可以做什么。
关于C++ 类成员函数 : how to write these functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424119/