const成员函数调用的区别!
代码如下:
- C/C++ code
#include <string>#include <iostream>using namespace std;class Sales_item{ public: int func(Sales_item &si)const; int func(Sales_item &si); Sales_item():ival(1){ } private: int ival;};int Sales_item::func(Sales_item &si)const{ return ival;}int Sales_item::func(Sales_item &si){ ival=10; return ival;}int main(){ Sales_item si1; cout<<si1.func(si1)<<endl;//非const对象调用非const函数 const Sales_item si2; cout<<si2.func(si1)<<endl;//const对象调用const函数 system("pause"); return 0;}在类中实现const的重载,用非const对象默认调用的是非const成员,如何让非const对象调用const成员呢!
在调用中如何区分调用的const成员和非const成员!const重载只有const的有无的区别,但是在调用中又体现不出成员函数是否有const修饰!!
[解决办法]
const_cast
[解决办法]
const_cast<const Sales_item&>(si1).func(si1)
[解决办法]
static_cast<const Sales_item &>(si1).func(si1)
[解决办法]
呵呵 非常量成员优先调用非常量成员函数! 常量成员只能调用常量成员函数