C++ 类成员函数 : how to write these functions?

标签 c++ class oop object

在我的面向对象 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, setYoutput 返回对它们所属类的实例的引用。注意输出返回的引用是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/

相关文章:

.NET:获取从特定类派生的所有类

python - 优雅与性能 : When to use redundant lists for queries?

c++ - 忽略 SIGSEGV 并继续执行

c++ - 禁止通过引用捕获

派生类数组的 C++ 构造函数拷贝

c++ - 在一个类中创建一个线程并让它在 c++ (cpp) 中的类中的一个函数上执行

c++ - 类的链接列表,如何在遍历时调用toString?

oop - 何时使用接口(interface)而不是抽象类,反之亦然?

C++ win 32application : Employee Class array issue

c++ - protected 成员与重载运算符冲突