常量const详解
来源:互联网 发布:对于网络诈骗如何处理 编辑:程序博客网 时间:2024/06/05 06:12
const是C++中的一个关键字,为什么会有const呢?主要是为了弥补因宏define产生的一些语法的错误。众所周知,define就是传统的宏定义,将某些常量赋值给一个变量,但由于宏定义在编译过程中只是单纯的进行赋值替换,并不会对赋值语句进行检查,因此会存在很多潜在的威胁,一旦定义出错,整个调用过程也讲出错。所以C++创始人为了避免这种错误才提出了用const来代替,同时会对所定义的常量进行语法检查。
const主要应用在三个方面:const常量、const指针和const成员函数。
1、const常量
调用形式:const 类型 变量名 = 常量;
每个const常量都必须进行初始化。例子:const int a = 10;a就是一个整型常量;const int b[3] ={1,2,3};b是一个整型数组。因为const常量比较简单,在此我们就不做赘述,只要记得一定要初始化成相同类型的常量即可。
2、const指针
const指针分成以下三种定义:指向常量的指针、指针常量、指向常量的指针常量。
(a)、指向常量的指针也就是说*p是常量,p不是常量
const int a = 1;const int b = 4;int c = 6;const int* p = &a; //首先必须进行初始化,其次const约束的是*p也就是说,p指向谁,谁就是常量p = &b;p = &c; //p并不是常量,可以改变,也就是说p可以指向任意的整型值,但是当p指向这个变量之后,变量将变成常量值,也就是说,此时c应该是常量。c = 16; //c是整型变量,所以可变。*p = 12; //此句不通,因为*p是常量,不能改变
(b) 指针常量
指针常量约束的是指针指向,也就是说p是常量,*p不是常量
下面用代码来说明:
int a = 5;int b = 6;int * const p = &a; //也就是说p指向的变量并不一定是常量,这里的const约束的不是指向的对象而是指针指向p = &b; //这条语句并不能通过,因为p的指向不能发生变化,因为指向是常量。* p = 15; //可以通过编译,因为*p不是常量
通俗的话讲:指向的对象是变量,但指针不是变量。并不能再改变指向关系。
(c)、指向常量的指针常量,两者均不可做改变
int a = 5;int b = 6;int const * const *p = &a;p = &b;//不能通过编译* p =10;//不能通过编译
无论是指针还是指向的变量都不可以变化。都是常量!!!
3、const成员函数
调用形式: 类型 函数名 const;
也就是说此函数只允许读操作,不能改变成员变量的值,只能进行一些返回或读出操作。这个作用只要应用于大型程序中,防止某些类函数被别人改动。
- const常量详解
- “常量”const详解
- 常量const详解
- C++ 常量类型 const 详解
- C++ 常量类型 const 详解
- php const 用法详解 定义 常量
- 【转】C++ 常量类型 const 详解
- const指针常量指针与指针常量详解
- 常量const
- const常量
- 常量(const)
- 常量const
- const 常量
- const常量
- const常量
- const常量
- const常量
- const常量
- 支持“XXXDbContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=2
- C#文件搜索
- Binder设计与实现
- java 流(二)
- 20160422 css 字体大小设置
- 常量const详解
- tomcat内存溢出
- Android应用中使用运行时注解
- watchOS 2
- 动画1
- c++第4次作业
- Linux Nginx升级
- c++第四次实验-2
- js清除浏览器缓存的几种方法