无法转换为' const int'到' int&'

时间:2015-09-03 10:36:22

标签: c++

我试图执行以下代码:

#include <iostream>
using namespace std;

class A
{
    int x;
public:
    A(int i = 25) { x = i; }
    int &f() const { return x; }
};

int main()
{
    A a(15);
    cout << a.f();
    return 0;
}

它创建一个名为a的对象,其x成员的值设置为15.但是,当我尝试调用该函数返回该值时,我收到一个错误。为什么会这样?

4 个答案:

答案 0 :(得分:6)

你试图返回对x的引用,这意味着什么 return可用于修改类对象中的x

但是,该方法是const,这意味着不允许修改自己对象中的任何内容。

你看到了矛盾吗? 在没有引用的情况下返回正常值或删除const

答案 1 :(得分:2)

您正尝试从标记为const的成员函数返回引用(可以修改),即它无法修改类实例。删除尾随const,它将起作用。或者返回const引用。

答案 2 :(得分:0)

const成员函数不会修改内部成员。如果您返回对可以修改int&的int x的引用,那么您将有机会修改与之相矛盾的值。

答案 3 :(得分:0)

从返回类型中删除引用

int f() const { return x; }

此外,正确的构建方式是

A(int i = 25) : x(i) {}    /// Initialization list