const关键字
const是constant的缩写,称为恒定不变,被const修饰后的实体都受到强制保护,避免发生意外的改动,可提高程序的强壮性和维护性。
const变量
const int maxSize = 50; //int型常量
const int *ptr = &maxSize; //指向const int 类型的指针
int minSize = 100; //int型
int* const ptr1 = &minSize; //指向int型的常量指针
const int* const ptr2 = &maxSize; //指向const int类型的常量指针
//接下来简述下
const int testSize = 30;
ptr = testSize; //ptr指针可以重新指向另一个变量
int num = 10;
prt1 = # //错误 ,常量指针只能在初始化中指向对象,不能改变指向的对象
需要注意的是:const的对象必须要进行初始化,因为不能进行赋值操作,只能在定义的时候赋值。
const用在函数上
//const 不能用在输出参数上,只能用在输入参数上,确保在函数作用域的时候不会发生改变
void copy(QString& dest, const QString sourse)
{
........
}
//const用在函数返回值上
const int* readData()
{
}
const int* value = readData();//正确
int* value1 = readData();//错误
//因为如果返回值是指针,必须需要跟返回值同一类型。
//const用在函数声明的末尾(const成员函数)
void test() const
{
//const成员函数不得修改了数据成员或者调用了其它非const成员函数,如果这期间修改或调用了,编译器会报错。
}
define (宏定义)
此时,不得不说就是define这个关键字了
常常会将常量定义成预处理器宏的情况。(本人现在也是经常使用宏定义去定义常量,现在慢慢在转变)
#define MAXSIZE (30)
int array[MAXSIZE];
宏定义会在编译阶段中的预处理阶段替换程序中的宏。
为什么要去使用const 而不是宏定义呢?
因为const表达式能够进行类型检查在编译的时候,所以更倾向于const表达式。