C++ const相关

来源:互联网 发布:林小宅的淘宝店叫什么 编辑:程序博客网 时间:2024/06/04 01:05

一些结论:

  • 可以建const变量的地址赋给指向const的指针,但不能将const的指针赋给常规指针
// "hello world"为字符串常量,不可被修改,他的值为第一个字符的地址const char * str = "hello world"; // 正确const char * temp = str; // 正确char *temp = str; // 错误
  • 非const指针赋给const指针是可以的
int age = 39;int *pd = &age;const int *pt = pd; // 允许
  • 如果数据类型本身并不是指针,则可以将const数据或非const数据的地址赋给指向const的指针,但只能将非const数据的地址赋给非const的指针

总结一下:在赋值的时候考虑一下对数据的操作权限,不可修改的只能赋给不可修改的,可修改的能赋给不可修改的和可修改的,即进行赋值后,新变量的修改权限不能大于原来变量的修改权限

建议:
将指针参数声明为指向常量数据的指针有两条理由:
- 可以避免无意间修改数据而导致的编程错误
- 使用const是的函数能够处理const和非const实参,否则将只能接受非const数据

一些列子:

int age = 39;const int *pt = &age;// 第二个声明中的const只能防止修改pt指向的值,而不能防止修改pt的值。也就是说可以将新的地址赋给ptint sage = 80;pt = &sage; // It is ok// 不能使用pt修改指向的值,但是可以使用sage来修改pt指向的值sage = 49; // 此时*pt为49// finger无法修改指向,但是可用finger修改sloth的值int sloth = 3;const int * ps = &sloth;int * const finger = &sloth;
原创粉丝点击