当类中存在一个与某个常成员函数同名的成员函数,那当使用普通对象调用此函数会发生什么?

很多书上说可以把函数" void getI( ) const "看作是函数 " void getI( ) "的一个重载。

以下实验表明,对象a会调用普通成员函数" void getI( ) ",请问这是为什么?C++为什么会如此设计?如何让对象a( )(普通对象,非常对象)调用" void getI( ) const " ?


#include <iostream>
#include <string>
using namespace std;

class A {
    const int i;
    int j;
public:
    A():i(1), j(2) { }
    void getI() const { cout << j; }
    void getI() { cout << j + 1; }
};

int main() {
    A a;
    a.getI();
}

谢谢!

阅读 2.9k
1 个回答

没什么特别好的方法,你可以通过一个临时的const引用来调用到带有const的成员函数。

int main() {
    A a;
    const A& b = a;
    b.getI();
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进