C++const总结

来源:互联网 发布:装修业务网络单 编辑:程序博客网 时间:2024/05/16 07:55

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


    };




0 0
原创粉丝点击