const限定符

作者: b64c74899092 | 来源:发表于2016-08-02 15:51 被阅读56次

const限定符

const对象一旦创建就不可以改变,所以必须初始化,可以用复杂的表达式或者常量来初始化。

例:

const int a=1; // 正确,编译时初始化
const int b=get_size(); // 正确,运行时初始化
const int c; // 错误,未初始化

默认状态下,const对象只在文件内有效,如果想要多个文件共享,则需要在一个文件中定义一次,在其他需要使用的文件中声明。不管是声明还是定义都要添加 extern 关键字。

例:

// f1.cc 定义并初始化了一个常量,该常量可以被其他文件访问
extern const int bufSize =fcn();

// f1.h
extern const int bufSize; //和 f1.cc 中的是同一个

const引用

可以把引用绑定到const对象上,但是不能通过引用来修改所绑定的对象。

例:

const int a=1;
const int &b=a; // 正确
b=2; // 常量的引用不能修改

特别的是,可以允许为一个常量引用绑定非常量的对象、字面值,甚至是一般表达式。这种情况下,绑定了一个临时量。

常量引用可以绑定到另一种类型:

double a=1.1;
const int &b=a;

// 编译器会把上面的转换成下面的操作

const int temp =a;
const int &b=temp;

指针和const

指向常量的指针不能用于修改所指对象的值。

const指针就是常量指针,一旦初始化就不能改变所指的地址。


顶层、底层const

顶层就是常量指针 例如: int *const a

底层就是指向常量的指针 例如: const int *a


constexpr和常量表达式

常量表达式是指值不会改变并且在编译过程中就能得到计算结果的表达式。

constexpr 是让编译器来验证表达式是否为一个常量表达式的类型,声明为 constexpr的变量一定是一个常量,而且必须用常量表达式来初始化,constexpr指针是一个常量指针。

相关文章

  • const 限定符详解

    背景 const 限定符的使用经常出现混淆,所以在此总结。 const 限定符与初始化 const 对象const...

  • C++11新特性(4)- const, const expres

    const限定符 const可以用于定义变量,它的值不能被改变。 const int bufSize = 512;...

  • C++类型转换

    const_cast const_cast转换符是用来移除变量的const或volatile限定符。 上述转换也可...

  • 笔记07:C++中的const

    1,const 限定符 const int i = 0;,使用const可以将i变成一个常量,当试图对i的值进行修...

  • const限定符

    const限定符 const对象一旦创建就不可以改变,所以必须初始化,可以用复杂的表达式或者常量来初始化。 例: ...

  • const限定符

    1、解决神秘数字(魔数)的问题 写个数字,不知道代表什么意思。就叫神秘。定义一个变量的话容易被修改 ,定义成con...

  • Const 限定符

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

  • C++ const用法

    const限定符 在变量前面加上const,也可以创建一个常量。使用const创建常量的一般格式如下: 使用con...

  • C++笔记(2)

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

  • C++ const总结

    const限定符在C++中非常常见,有以下几种用途 const修饰一般变量 const修饰的变量必须初始化,原因是...

网友评论

    本文标题:const限定符

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