C++中const的作用

 在C++里,const可用来修饰变量或者指针,从而使该变量或指针的值无法改变,一般来讲,const作用有下面几点:

①定义const变量,从而使变量值只可读

②定义const指针,从而使指针无法指向其他指针(注意const int*a,int const*a,int*const a的区别)

③在类中定义const成员函数,从而使对象的值无法被修改,同时也为const 对象提供了接口。

④在类中用来重载,对于两个相同参数表的函数,const的修饰可以作为重载的依据。

看下面一段代码

 

最终输出的将是2。

当然这很让人疑惑,学过C++的人都知道,如果参数表相同,返回值是无法作为重载依据的,因为编译器不知道调用者想调用的是哪一个函数。同样,如果良个成员函数只有const与非const的区别,编译器如何知道调用者想调用哪个函数?我自己想到的解释是,如果一个成员函数用了const重载。非const对象会优先调用非const的成员函数,而对于const对象则只能调用const的成员函数。具体规则如下:

     对象.成员函数

     对象           成员函数       对/错
1、   const         const           对
2、   const         non-const       错
3、   non-const     const           对
4、   not-const     non-const       对

 

     成员函数调用成员函数

     成员函数       成员函数       对/错
5、   const         const           对
6、   const         non-const       错
7、   non-const     const           对
8、   non-const     non-const       对

但是如果用const重载了一个成员函数,如何使用一个非const对象调用const函数??想不出。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值