常量对象的函数重载

时间:2015-09-14 21:54:24

标签: c++ overloading

struct A {

    void foo(int i, char& c) { 
        cout << "foo int char&" << endl;
    } 

    void foo(int& i, int j) const {
        cout << "const foo int& int" << endl;
    } 

}; 

int main() {   
    A a;   
    const A const_a;   
    int i = 1;   
    char c = 'a';   
    a.foo(i,i);
} 

将被打印:

  

const foo int&amp; INT

我不明白为什么。 为什么“const foo int&amp; int”不会被打印出来? 我认为常量Object只能调用常量方法,没有const可以调用没有const。

1 个答案:

答案 0 :(得分:1)

你误会了会员 - const

普通对象可以在其上调用任何成员函数,const或其他。

约束是您的const_a无法在其上调用非const成员函数。不幸的是,你没有测试过。