C++中的const

1.const 修饰常量:

const修饰的变量不可变,只能在初始化时赋值。以下两种写法效果是一样的:

const int a = 10;

int const a = 10;


2.修饰指针

const在*左侧:修饰指针指向的变量为常量

int a = 10;

const int* p =  &a;

int const* p =  &a;

const在*右侧:修饰指针的值不能变,即指针本身为常量

int* const p = &a;



3.修饰引用

不能通过引用修改变量的值

int a = 10;

const int& b = a;

int& const b = a;        //修改b将无法修改a的值



3. 修饰类成员变量

用const修饰的类成员变量,只能在类的构造函数初始化列表中赋值,不能在类构造函数体内赋值。

class A

{public:

    A(int x) : a(x) // 正确  {

        //a = x;    // 错误

    }

private:

    const int a;

};


4.修饰类成员函数

用const修饰的类成员函数,在该函数体内不能改变该类对象的任何成员变量, 也不能调用类中任何非const成员函数。

class A

{public:

    int& getValue() const{

        // a = 10;    // 错误

        return a;

    }

private:

    int a;// 非const成员变量

};


5.修饰类对象

用const修饰的类对象,该对象内的任何成员变量都不能被修改。

只能调用对象的const成员函数,不能调用非const成员函数。

class A

{

public:

    void funcA() {}

    void funcB() const {}

};

int main

{

    const A a;

    a.funcB();    // 可以

    a.funcA();// 错误

    constA* b =new A();

    b->funcB();// 可以

    b->funcA();// 错误

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. const 常量变量const 类型说明符 变量名 常引用const 类型说明符 &引用名 常对象类名 co...
    一叶之界阅读 989评论 0 2
  • const是C语言中保留的一个关键字,表示变量是只读的,即不可改变的常量。 (1)用const修饰一般变量(C语言...
    一木之夏阅读 301评论 0 0
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,059评论 0 14
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,729评论 0 10
  • 一个人独处的时候,沉默会说话。 -----题记 似乎从很久以前开始,我就学会了享受独处的时光。童年有多喜欢热闹,长...
    欢欢不是一条狗阅读 3,096评论 0 0