`
sogotobj
  • 浏览: 620002 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

c++日积月累-const

阅读更多

const A* a;和A const * a;是一样的,通常用前者,表示被指针a所指的A对象,不能通过a修改
A* const a;是指a指针是const的不能再指向其他对象
const A* const a;同时包括上两者的含义。

const A& a;和A const& a;是一样的,通常用前者,表示引用a不能修改它所引用的对象。注意:A& const a;的写法是没有意义的,因为引用本身就是不能改变的,没必要再用const说明。

const的指针和引用,只能使用对象的const方法,即在声明中该方法后有const关键字。如果const方法要返回对象的引用或指针,也必须用const修饰,例如 const A& get() const;
非const的指针和引用,则能访问cosnt和非const的方法。
因此,函数通常会有const重载,即函数签名完全相同,只存在是否有const修饰的区别,这通常用在操作符重载上,如 const A& operator[](int idx) const;和A& operator[](int idx);

如果const成员函数需要修改某个成员变量,可以将该成员变量修饰为mutable,如果编译器不支持mutable,则进行const_cast

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics