C++ 通过void函数(c+;+;)获取数据成员
假设我在一个类中有私有数据成员intx和inty。我知道我可以分别通过以下方式获取数据成员: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
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;
}