C++中 const限定符基本用法总结
来源:互联网 发布:mac菜单栏隐藏 编辑:程序博客网 时间:2024/06/14 12:39
const:
const对象必须初始化,const对象仅在文件内有效,否则加入extern,多文件共享
编译时就替换
对普通变量的修饰比较简单,暂不做描述;
1.指针
经典的指针常量与指向常量指针的区别:
const int *p
int const * p(底层const)
以上表示一个意思。指向常量的指针,对象的值不可改变,但指针可以更换指向的对象
int * const p,指针常量;(顶层const)
指针内所存的地址不可改变,指向的对象的值可以改变;
注意:
typedef char * A;
const A p; 表示什么呢?
有人会将其展开
const char * p; 认为是指向常量的指针。错误
const修饰的是A,A是指针,所以上句表示指针常量
2.引用,常量引用
int ci=12;
const int &a=ci;
引用本身性质决定绑定关系不可改变;
常量引用会使:不能修改所绑定的对象,不能用一个非常量引用指向常量对象,允许为其绑定非常量的对象(此时,该对象可以通过其他途径修改);
声明引用的都是底层const
拷贝操作,注意底层const的限制,比如要有相同的const资格,或两对象数据类型可以转换;顶层不受影响;
常量表达式:
受数据类型(有const)与初始值决定(编译而非运行时就有结果)
3.C++11 新限定符constexpr , 编译器验证是否是常量表达式
constexpr 声明指时,仅对指针有效
constexpr char * p;是一个指针常量;(置为顶层)
constexpr const char * p;是一个指针常量,同时指向常量对象;
4.类
4.1常对象:
常类对象必须初始化,且不可被更新,唯一的对外接口,常成员函数;
4.2常成员函数
无论是否常对象,常成员函数调用期间,目的对象都视为常对象
不可更新数据成员,不可调用非常成员函数
例:int func() const;(声明,定义都带上const)
const可以区分重载(非常对象调用时,选择非const函数)
4,3常数据成员
只能通过初始化列表获取初值
const 与#define,
用const可以像变量一样处理,可以在调试器中按名称引用,分配空间,具有类型.而#define是在编译前由预处理器处理,调试器不引用宏名,不分配空间,没有类型
- C++中 const限定符基本用法总结
- c语言中得const 限定符的用法
- C++:const限定符基本解析
- const限定符的用法总结
- C++中const限定符用法
- const 限定符总结
- c++-const限定符
- C++const限定符
- C++const限定符
- const限定符用法整理
- C++中const限定符的几种常见用法
- C++中const限定符的一些用法
- C++ const 限定符总结
- C++ const 限定符总结
- const 限定符常用总结
- C++ const限定符总结
- 关于const 限定符总结
- C++ const限定符总结
- Yii CDBCriteria常用方法
- yii中数据模型的使用
- yii 获取系统级请求参数的常用方法
- javascript时间戳和日期字符串相互转换
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- C++中 const限定符基本用法总结
- Git pro 深入浅出
- 微信支付错误两个问题的解决:curl出错,错误码:60
- 文章标题
- PHP导出一个txt文本文件
- php 生成.txt文件
- PHP 时间与字符串的相互转化
- 系统级性能分析工具 — Perf
- php日期转时间戳,指定日期转换成时间戳