C++ 通过void函数(c+;+;)获取数据成员

C++ 通过void函数(c+;+;)获取数据成员,c++,C++,假设我在一个类中有私有数据成员intx和inty。我知道我可以分别通过以下方式获取数据成员: int getX() { return x; } int getY() { return y; } 似乎还有另一个功能可以完成类似的工作: void getXY(int &aX, int &aY) const {aX = x; aY = y;} 如何使用此函数执行与上述相同的操作——分别获取x和y?示例: #include <iostream> using namesp

假设我在一个类中有私有数据成员intx和inty。我知道我可以分别通过以下方式获取数据成员:

int getX() { return x; } 
int getY() { return y; }
似乎还有另一个功能可以完成类似的工作:

void getXY(int &aX, int &aY) const {aX = x; aY = y;}
如何使用此函数执行与上述相同的操作——分别获取x和y?

示例:

#include <iostream>
using namespace std;

class foo {
    int x = 2, y = 3;
public:
    void xy(int &x, int &y) const {
        x = this->x;
        y = this->y;
    }
};

int main() {
    int x, y;
    foo{}.xy(x, y);

    cout << x << " " << y << endl;
    return 0;
}
#包括
使用名称空间std;
福班{
int x=2,y=3;
公众:
无效xy(整数和x,整数和y)常数{
x=此->x;
y=这个->y;
}
};
int main(){
int x,y;
foo{}.xy(x,y);

您可以通过简单地调用函数来实现它

int a = getX();
int b = getY();
类似于

int a,b;
getXY(a,b);

使用单值getter函数简单高效:

void needs_x_only( Foo const& object )
{
    int const x = object.x();   // Using single item getter function.
    (void) x;
}
如果
x()
函数是
inline
,编译器很可能会将其优化为直接访问相关数据成员

如果不需要所有项,则使用设计为不带参数的例程的多项getter可能不太清晰,并且它会阻止对参数使用
const
。支持
const
(通常需要)的一种方法是编写一个小包装函数。例如

auto position_of( Foo const& object )
    -> Point<int>
{
    int x;
    int y;
    object.get_xy( x, y );      // Using out-arguments getter routine.
    return {x, y};
}

您已经编写了函数,那么这里有什么问题?如何调用C++中的函数?
void needs_both_x_and_y( Foo const& object )
{
    Point<int> const position = position_of( object );
    (void) position;
}