我正在读一本书C ++和R中的统计计算(Eubank和Kupresanin,2012),并且有以下练习:
“3.27。为具有两个整数成员元素X
和a
的结构b
编写代码。结构的一个方法应该有原型
bool compare(const& X)
compare
方法应比较两个X
对象,并返回a
成员值较小的对象。“
这里的问题是我不明白const& X
应该代表什么,并且似乎g ++编译器不理解它,因为它给出了错误。这应该意味着什么,还是只是一个错字?我的解决方案忽略了const&部分,是这样的:
struct X{
int a;
int b;
X(int A, int B);
bool compare(X x);
};
X::X(int A, int B){
a=A;
b=B;
}
bool X::compare(X x){
if(x.a>(*this).a){
return true;
} else return false;
}
int main(){
X y(5,0);
X z(2,3);
if(y.compare(z))
cout << "y.a = "<<y.a<< " which is larger than z.a = "<< z.a<<endl;
else
cout << "y.a = "<<y.a<< " which is smaller than z.a = "<< z.a<<endl;
return 0;
}
这似乎工作正常。
答案 0 :(得分:3)
如果您已正确转录,则会出现拼写错误,但&
的存在不是它。它应该是:
bool compare(const X&)
这是引用类型。也就是说,const X&
是“const X
的引用”。获取引用类型参数意味着不会复制传入的X
对象 - 您在函数中看到的对象是从外部传入的对象。
答案 1 :(得分:2)
这很可能是一个错字,它们可能意味着const X &
,就像对常量X
的引用一样:
bool compare(const X &)
答案 2 :(得分:1)
语法
bool compare(const X&){ }
表示对X的常量“引用”; 引用是变量的别名。它的工作方式类似于指针,但它连接到它在其生命周期中引用的对象。您将更改传递给函数的对象,就像使用指针一样。