C++11学习之const限定符

const 限定符

在c++11中,主要有两大应用:变量的限定和成员函数的限定

const 限定符用来表示不可变的对象。const 对象必须初始化。

变量的限定

1.        可以用来限定变量,内置或者类类型

例如    

                 const int i = 42;

对类类型的限定如:   

                 const Sales_data rhs ;

表示这些变量的值不可改变,即这些变量的值只能读,不能赋予新值。

2.        可以用来限定指针

                 const int * const ip = &i;

//指针ip是指向不可变的int型的常量指针。*p =23 意味着修改i,这是不允许的;p = q意味着改变指针指向的对象同样是不允许的操作。

指针是对象。在指针中有顶层const和底层const的概念。所谓顶层const指的是指针本身是const的,即常量指针;底层const是指针所指的对象是const的,即对象是常量

3.        可以用来限定引用

注意:引用不是对象,只是所引用对象的一个别名。因此它的const没有底层顶层之分!

如果所引用的对象是const的,则引用必须是const的:

                  const int &r = i; 

引用不是对象,因此不存在

                  int & const ref = i;

成员函数的限定

成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象。例如一个Sales_data类型的一个对象total,调用其成员函数如total.isbn(),则编译器负责把total的地址传递给isbn的隐式形参this,可以等价的认为编译器将该调用重写成了如下形式:               

              Sales_data::isbn(&total);

this是一个常量指针,不允许改变this中保存的地址。

而成员函数的const限定如以下形式:

class Sales_data{

public:

std::string isbn() const { return bookNo;}  /*const位于函数形参列表之后*/

//其他成员

};

这里的const的作用是修改隐式this指针的类型。默认情况下,this的类型是指向类类型非常量版本的常量指针,加入const之后表示this是指向类类型常量版本的常量指针。即该函数不会改变Sales_data的数据成员。另外,通过区分成员函数是否是const的,可以对其进行重载。虽然常量对象可以调用非常量版本和常量版本的成员函数,但有时调用非常量版本是一个更好的匹配。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值