zoukankan      html  css  js  c++  java
  • [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而使用。

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

  • 相关阅读:
    地铁项目结对编程
    地铁项目初步计划及简单设计
    构建之法浅读感想
    集美大学1511,1512软件工程课程作业总结
    第二次作业小结
    第二次作业评分可能要 delay 一些
    第一次作业小结
    关于我
    面向对象设计与构造第四单元总结及期终总结
    面向对象设计与构造第三单元作业总结
  • 原文地址:https://www.cnblogs.com/Vivianwang/p/6429722.html
Copyright © 2011-2022 走看看