您的位置:首页 > 编程语言 > C语言/C++

C++const总结

2016-05-23 20:01 337 查看
const只是在编译时期保证一个常量不可以被改变 在运行时期不会保证变量不可变  可以通过地址去改变 在运行时期 变量地址和常量地址 都是一样的地址 被定义为const的常量 编译器会直接替换他 这一点和#define是一样的 

ps:const char*s ="acdefg" 这句代码 中的*s是不可以被改变的 原因是"acdefg"位于内存的常量区 而不是因为限定了 const 不信的话 可以去试试这个 char* s = "abcdef";这里我们去掉了const  仍然不能修改*s 所以说const只能检测是否在编译时期有修改const常量的行为

const:

1.作用

1.常量定义

2.指针限定

const* int p;//指针指向的值不可变

const int *p;//指针指向的值不可变

int  const*p;//指针指向的值不可变

int * const p;//指针指向不可变

const (int*) p;//指针指向不可变

const int* const p ;//两者皆不可变

3.函数参数限定

4.函数返回值限定

const int * fun2() //调用时const
int *pValue = fun2();

                          //我们可以把fun2()看作成一个变量,即指针内容不可变。
int* const fun3()   //调用时int
* const pValue = fun2();

                          //我们可以把fun2()看作成一个变量,即指针本身不可变。

5.const修饰类成员变量

类成员变量不可以被改变 此变量只能列表初始化

6.const修饰成员函数

此函数仅能用const成员变量 不允许修改任何数据成员

7.const修饰对象

仅能调用const成员函数

不能在类声明中初始化const数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道SIZE的值是什么。

    class A

    {…

        const int SIZE = 100; // 错误,企图在类声明中初始化const数据成员

        int array[SIZE];       // 错误,未知的SIZE

    };



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: