C++const总结
2016-05-23 20:01
337 查看
const只是在编译时期保证一个常量不可以被改变 在运行时期不会保证变量不可变 可以通过地址去改变 在运行时期 变量地址和常量地址 都是一样的地址 被定义为const的常量 编译器会直接替换他 这一点和#define是一样的
ps:const char*s ="acdefg" 这句代码 中的*s是不可以被改变的 原因是"acdefg"位于内存的常量区 而不是因为限定了 const 不信的话 可以去试试这个 char* s = "abcdef";这里我们去掉了const 仍然不能修改*s 所以说const只能检测是否在编译时期有修改const常量的行为
const:
1.作用
1.常量定义
2.指针限定
const* int p;//指针指向的值不可变
const int *p;//指针指向的值不可变
int const*p;//指针指向的值不可变
int * const p;//指针指向不可变
const (int*) p;//指针指向不可变
const int* const p ;//两者皆不可变
3.函数参数限定
4.函数返回值限定
const int * fun2() //调用时const
int *pValue = fun2();
//我们可以把fun2()看作成一个变量,即指针内容不可变。
int* const fun3() //调用时int
* const pValue = fun2();
//我们可以把fun2()看作成一个变量,即指针本身不可变。
5.const修饰类成员变量
类成员变量不可以被改变 此变量只能列表初始化
6.const修饰成员函数
此函数仅能用const成员变量 不允许修改任何数据成员
7.const修饰对象
仅能调用const成员函数
不能在类声明中初始化const数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道SIZE的值是什么。
class A
{…
const int SIZE = 100; // 错误,企图在类声明中初始化const数据成员
int array[SIZE]; // 错误,未知的SIZE
};
ps:const char*s ="acdefg" 这句代码 中的*s是不可以被改变的 原因是"acdefg"位于内存的常量区 而不是因为限定了 const 不信的话 可以去试试这个 char* s = "abcdef";这里我们去掉了const 仍然不能修改*s 所以说const只能检测是否在编译时期有修改const常量的行为
const:
1.作用
1.常量定义
2.指针限定
const* int p;//指针指向的值不可变
const int *p;//指针指向的值不可变
int const*p;//指针指向的值不可变
int * const p;//指针指向不可变
const (int*) p;//指针指向不可变
const int* const p ;//两者皆不可变
3.函数参数限定
4.函数返回值限定
const int * fun2() //调用时const
int *pValue = fun2();
//我们可以把fun2()看作成一个变量,即指针内容不可变。
int* const fun3() //调用时int
* const pValue = fun2();
//我们可以把fun2()看作成一个变量,即指针本身不可变。
5.const修饰类成员变量
类成员变量不可以被改变 此变量只能列表初始化
6.const修饰成员函数
此函数仅能用const成员变量 不允许修改任何数据成员
7.const修饰对象
仅能调用const成员函数
不能在类声明中初始化const数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道SIZE的值是什么。
class A
{…
const int SIZE = 100; // 错误,企图在类声明中初始化const数据成员
int array[SIZE]; // 错误,未知的SIZE
};
相关文章推荐
- C语言学习之旅
- C++中的struct与class继承方式
- 如何快速又正确地在C++里实现锁
- inline用法详解
- leetcode 70 Climbing Stairs C++
- 交换两个数
- 开始学习C++
- C++作业6
- C++ 标准函数库 —— 文件的输入输出 (Input/Output with files)
- C++ 高级篇(五)—— 预处理指令
- C++ 停止并禁用服务
- C++ 高级篇(四)—— 类型转换高级
- C++ 高级篇(三)—— 出错处理
- 基于arm的C++反汇编 函数的工作原理
- c++数组实现循环队列
- C++第6次实验-分离数组
- C++中的STL中map用法详解
- C++中的STL中map用法详解(1)
- (C++)int,char,string之间的一些转换
- 详解C结构体、C++结构体 和 C++类的区别