0

我正在阅读 C++ 和 R 中的统计计算一书(Eubank 和 Kupresanin,2012 年),并且有以下练习:

X"3.27. 为具有两个整数成员元素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;
}

这似乎工作正常。

4

3 回答 3

3

如果您已正确转录,则存在拼写错误,但&不是。它应该是:

bool compare(const X&)

它是一个引用类型。也就是说,const X&是一个“引用const X”。采用引用类型参数意味着X传入的对象不会被复制 - 您在函数内部看到对象是从外部传入的对象。

于 2013-02-19T13:35:33.593 回答
2

这很可能是一个错字,他们可能的意思是const X &,作为对常量的引用X

bool compare(const X &)
于 2013-02-19T13:36:18.827 回答
1

语法

bool compare(const X&){ }

表示对 X 的恒定“参考”;引用是变量的别名。它像指针一样工作,但连接到它在其生命周期内引用的对象。您将更改传递给函数的对象,就像使用指针一样。

于 2013-02-19T13:37:07.453 回答