C++中的const是一个非常纠结而容易令人混乱的限定符,最近由于理解代码的需要,自己整理了一下const的用法记录如下:
一.const存在的意义:
对指针的权限加以限定,从而提高程序的健壮性和安全性。
二.const的基本用法:
1.用const限定变量或者对象
const int Test=20;
要点:1.定义时必须同时进行初始化。
2.const修饰会的对象默认为局部变量。
2:指向const变量的指针
const int *Test ;
其中Test为指向int类型const变量的指针
要点:1.在定义时可以不用初始化(指针本身并不是const型的)
2.不能通过该指针改变所指向的const变量的值。
3.该指针也可以指向非const变量,但不能同过该指针改变该变量的值。
3:用const所限定的指针
int a=5; int *const Test=&a;
Test指向int类型变量的const指针。
要点:1.定义时必须同时进行初始化。
2.不能重新对该指针进行赋值。
4.指向const对象的用const所限定的指针
const int a=5; int *const Test=&a;
要点:1.既不能改变Test的指向,也不能改变Test所指向对象的值。
三.其他的一些复杂情况:
指针与typedef
typedef string *Test;
const Test p;
求p指向的类型:
这里const Test时,const修饰的时Text类型,Test是一个指针。因此,该声明语句应该是把p定义为指向string类型的const指针,等价于:
string *const p;
也等价于
Test const p;
一.const存在的意义:
对指针的权限加以限定,从而提高程序的健壮性和安全性。
二.const的基本用法:
1.用const限定变量或者对象
const int Test=20;
要点:1.定义时必须同时进行初始化。
2.const修饰会的对象默认为局部变量。
2:指向const变量的指针
const int *Test ;
其中Test为指向int类型const变量的指针
要点:1.在定义时可以不用初始化(指针本身并不是const型的)
2.不能通过该指针改变所指向的const变量的值。
3.该指针也可以指向非const变量,但不能同过该指针改变该变量的值。
3:用const所限定的指针
int a=5; int *const Test=&a;
Test指向int类型变量的const指针。
要点:1.定义时必须同时进行初始化。
2.不能重新对该指针进行赋值。
4.指向const对象的用const所限定的指针
const int a=5; int *const Test=&a;
要点:1.既不能改变Test的指向,也不能改变Test所指向对象的值。
三.其他的一些复杂情况:
指针与typedef
typedef string *Test;
const Test p;
求p指向的类型:
这里const Test时,const修饰的时Text类型,Test是一个指针。因此,该声明语句应该是把p定义为指向string类型的const指针,等价于:
string *const p;
也等价于
Test const p;