读书人

const成员函数调用的区别!该怎么处理

发布时间: 2012-04-16 16:20:04 作者: rapoo

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)
[解决办法]
呵呵 非常量成员优先调用非常量成员函数! 常量成员只能调用常量成员函数

读书人网 >C++

热点推荐