Item 3:尽可能使用const【effective C++读书笔记】

const出现在星号左边,表示被指物是常量;出现在星号右边,表示指针自身是常量。

const显式地表明哪些部分是不应修改的,增强了代码的可读性,同时也让编译器在检测到非法的修改操作时及时报错。

const某些情况下可以避免将“==”写成“=”的错误

另外,const成员函数可以操作const对象(const对象只能调用const成员函数而不能调用非const成员函数,非const对象可以调用const成员函数和非const成员函数)

 

两个成员函数如果只是常量性不同,可以被重载,如下:

①void func()const{}以及 void func(){}是不一样的,前者不允许修改成员数据,对操作符重载也是同理

 

如果是引用传递的函数参数常量性不同,那么可以被重载,如下:

②void func(constint &a){} 以及 void func(int &a){}也是不一样的

 

而如果是值传递的函数参数常量性不同,则不可被重载(个人理解是const用于保护这个参数不被修改,但由于值传递的方式函数并不会修改传入参数,所以没有必要加const)

③void func(constint a){} 以及 void func(int a){}

  //在一个类中尝试定义这两个成员函数,报错信息为重复定义

    

mutable可以解除const的限制,使得带有mutable的成员变量即使在const成员函数中也可以被修改,如下:

class A{

public:

     int func() const; //const成员函数

private:

     mutable int a;

     int b;

};

int func() const

{

     a = 5;    //可以修改

     b = 5;    //不可以修改

}

 

当const和非const成员函数有着实质等价的实现时,可以令非const成员函数调用const成员函数,避免代码重复。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值