修饰全局变量
#define PI1 3.14
const double PI2 = 3.14;
/*两种方式都可以用来定义全局变量。不过,第二种要比
第一种方式要好,使用宏定义的变量,其信息一般以表格
的形式储存在系统中,当我们在调试程序时,就有可能使
得这个宏定义的变量反复出现在符号表中。而const修饰
的变量会一直出现在符号表,使得我们调试方便许多。*/
常量指针
const int *p1 = 100; //常量整形指针
int *const p2 = 200; //整形常量指针
/*常量整形指针,不能通过这个指针修改它所指向的变量,
指针本身是可变的。
整形变量指针,指针不可修改,但是指向的变量可以修改*/
不能把常量指针赋值给非常量指针,反过来可以。
const int *p1;
int *p2;
p1 = p2;//ok
p2 = p1;//error
p2 = (int *)p1;//ok,强制类型转换
/*假如p1的值可以直接赋予p2,那么可以通过p2直接修改p1所指向的变量,所以必然不能直接赋值*/
例子:
void Myprintf(const char* p)
{
strcpy(p, "this");//error
printf("%s", p);
}
修饰类成员函数
class student {
public:
student(int age) :_age(age) {}
void getAge()const { //不希望通过函数来改变类的私有变量
_age = 100; //错误,编译器会报警
cout << _age << endl;
}
private:
int _age;
};
/*如果我们在定义一个类的成员函数时,并不希望这个函数能够改变类的
私有变量,这时我们可以使用const将这个成员函数定义为常量函数,这样,
这个函数就不能修改私有变量了。*/
参考博客:https://blog.csdn.net/weixin_37720172/article/details/68946534
网友评论