常量对象的函数重载
function overload of a constant object
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& int
我不明白为什么。
为什么 "const foo int& int" 不会被打印?
我以为常量Object只能调用常量方法,而noneconst可以调用noneconst.
你误会会员了-const
.
普通对象可以调用任何成员函数,const
或其他。
约束是您的 const_a
将无法调用非 const
成员函数。不幸的是,你没有测试它。
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& int
我不明白为什么。 为什么 "const foo int& int" 不会被打印? 我以为常量Object只能调用常量方法,而noneconst可以调用noneconst.
你误会会员了-const
.
普通对象可以调用任何成员函数,const
或其他。
约束是您的 const_a
将无法调用非 const
成员函数。不幸的是,你没有测试它。