[C++面试]关于const的使用方法

面试C++时被问到关于const关键字的问题,在此总结一下。

(1)const修饰变量

const int var = 0;    //const修饰变量时,必须在声明变量的同时给出定义

(2)const在方法名后修饰

class CExample()
{
public:
     int getData() const          //此处的const使用,是为了保证在getData()方法中不对
//该方法生命周期之外的值进行修改,用于保护成员变量
{ return m_data; } private: int m_data; }

(3)const在方法名前后修饰

class CExample()
{
public:
     const int* getData() const       //后面的const是为了保护成员变量在方法
//内不会被修改(修饰成员变量)
//前面的const是为了保证在外部调用该方法后,
//返回值不会被篡改(修饰方法)
{ return &m_data; } private: int m_data; }

 

(4)mutable关键字的使用

class CExample()
{
public:
     const int* getData() const     
    {
           m_isdone = true;
           return &m_data;
    }
private:
     int m_data; 
     mutable bool m_isdone; //mutable是在当无法对该方法生命周期之外的成员
//变量进行修改时,若有诸如标志位的变量需要进行修改时使用
}

注:上述的概念均针对编译时有效,并不能有效防止在运行时的篡改。

      另外,当我向同事请教这个问题的时候,同事对我的建议是,const这一关键字主要是为了帮助我们控制代码的逻辑,并不要为了使用const而使用。

 

注:原创博客,转载请注明。

转载于:https://www.cnblogs.com/Vivianwang/p/6429722.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值