const成员函数调用的区别!该怎么处理
const成员函数调用的区别!
代码如下:
在类中实现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)
------解决方案--------------------
呵呵 非常量成员优先调用非常量成员函数! 常量成员只能调用常量成员函数
代码如下:
- 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)
------解决方案--------------------
呵呵 非常量成员优先调用非常量成员函数! 常量成员只能调用常量成员函数