美文网首页程序员
C++基础知识学习-const

C++基础知识学习-const

作者: 屋顶上的橡皮人 | 来源:发表于2016-05-25 09:57 被阅读58次

** const 对象被设定为仅在文件内有效.当一个程序需要使用多个文件的时候,如果多个文件出现同名的const变量时,其实等同于在不同的文件中分别定义了独立的变量. **
** 如果想在多个文件中共享const对象,最好的做法是:对于const变量不管是声明还是定义都添加extern关键字.

extern const i=1024;

const引用

const int c=1024;
const int &r1=c;//对常量的引用需要在声明前加入const
int &r2=c;//错误,c是常量,而r2是一个非常量引用声明.
const int &r3=1024;//允许声明一个常量引用绑定一个字面值

与之对应的,如果绑定非常量引用

double i=3.14;
int &r=i;//错误,int类型引用不能绑定到double对象上

const和指针

pointer to const:** 指向常量的指针 **

const int i=1024;
int *p=&i;//错误,p是一个非常量指针
const int *p1=&i;//正确,p1是一个指向常量对象的指针

const指针

** 常量指针 ** const pointer 必须初始化

int i=1024;
int *const p=&i;//p指针所存放的地址不会改变
const int ii=2048;
const int *const p1=ⅈ//p1是指向常量对象的常量指针

顶层 const和底层 const

** 顶层const (top-level const) 表示指针本身是一个常量 **
** 底层const (low-level const) 标识指针所对应的对象是一个常量 **

constexpr变量

c++11新标准,允许将变量声明为constexpr类型来由编译器来验证变量的值是否是一个常量表达式,用constexpr声明的变量一定是一个常量,而且必须用常量表达式来初始化.

constexpr int i=1024;
constexpr int sz=size();//只有当将size函数声明为constexpr函数时才成立.

要注意的是,constexpr 后跟的声明类型必须为字面值(literal type)类型(如int,double,引用,指针),而复合类型(包含string,IO)则不属于字面值类型.其中,一个constexpr指针的初始值必须定义为0或者nullptr.

const int *p=nullptr;//指向常量的指针(pointer to const)
constexpr int *p1=nullptr;//指向整数的常量指针

相关文章

  • C++基础知识学习-const

    ** const 对象被设定为仅在文件内有效.当一个程序需要使用多个文件的时候,如果多个文件出现同名的const变...

  • C++常对象-常函数-常成员变量

    C++常对象-常函数-常成员变量 C++常对象 C++常对象, 就是使用const修饰的类实例!const A a...

  • C++笔记(2)

    这次学习的是const,C++是一种很坑爹的东西,连const都能玩出这么多的花样。 const 限定符 cons...

  • 常应用问题

    C++ const 常指针:const int* ptr;const 修饰int*,ptr指向整形常量,ptr指向...

  • C/C++ Const 小知识

    Const Const 特点 [描述] 在 C、C++、D 和 JavaScript 编程语言中,const是一个...

  • 网易云课堂(Boolan)C++ 第五周笔记

    CONST C++中只有const对象调用对象内非const函数会不成功,所以能加const的尽量加const,而...

  • OpenCV2 图像叠加

    C++:void Mat::copyTo(OutputArraym)const C++:void Mat::cop...

  • Const 限定符

    前言:认真学习一下 C++,感觉光会 Go 没啥用。读一读《C++ Primer》 基本知识 const 对象一旦...

  • 引用

    1、C++类型检查严格 ```c++ const int a = 10; int b = a; cont int ...

  • C++面经

    1. 语言基础 1.1 C++的四种类型转换: const_cast => 用于将const变量转为非const;...

网友评论

    本文标题:C++基础知识学习-const

    本文链接:https://www.haomeiwen.com/subject/yvftdttx.html