您的位置:首页 > 编程语言 > C语言/C++

C++关于参数为const引用类型的函数调用参数成员函数的一个问题

2012-03-04 22:53 731 查看
刚才遇到这么一个问题:

class Base

{

public:

Base(int b):a(b){}

void getMem()

{

cout << "Base = " << a << endl;

}

};

void MemFcn(const Base& item)

{

item.getMem();

}

当我把一个Base对象引用传递给MemFcn函数时,报错|error: passing ‘const Base’ as ‘this’ argument of ‘void Base::getMem()’ discards qualifiers

思考了一会,想到原来虽然传递的参数为const 引用,但是在函数体里面又调用了另一个函数,而这个函数(即getMem)可能会改变item的值,这与item声明为const是相互矛盾的。因此需要将getMem函数声明为const,以保证不会修改item的值。

所以应修改为:

class Base

{

public:

Base(int b):a(b){}

void getMem() const

{

cout << "Base = " << a << endl;

}

};

void MemFcn(const Base& item)

{

item.getMem();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐