const总结

1、修饰变量

const int i = 10;//i,j都用作常变量

int const j = 20;

i = 15;//错误,常变量不能改变

j = 25;//错误,常变量不能改变

const int k;//错误,必须初始化

=======================

2、修饰指针指向的内容

const char* val = "hello";//const修饰的是char*

const char *val2 = "world";//与上一行等价

char const *val3 = "www";//const修饰的*val3char类型的常量,即val3指向的为常量,与前两行等价。

*val = 'b';//错误,val所指向的为常量

*(val2+2) = 'c';//错误,const修饰的是char*val2所指向的为常量

val = "aaa";//正确,val不受const控制,可以更改它指向的地址值

const char* p;//正确,可以不用初始化

=======================

3、修饰指针

char* const p = "qqq";//const修饰的是指针pp为常量指针

p = "aaa";//p所指向的地址值固定,不能被更改

char* const q;//错误,必须初始化指针

=======================

4、同时修饰指针指向的内容和指针本身

结合2,3特性

const char* const p = "hello,world";//p为常量指针,同时p指向常量区。

*p = 'a';//错误,p指向一个常量

p = "aaa";//错误,p指向的地址值不能被更改

=======================

5、修饰引用参数

修饰引用参数时:

void function(const Class& Var);//引用参数在函数内不可以改变

void function(const TYPE& Var); //引用参数在函数内为常量不可变

=======================

6、修饰函数返回值

它的含义和const修饰普通变量以及指针的含义基本相同。

(1) const int fun1() 这个其实无意义,因为参数返回本身就是赋值。

(2) const int * fun2()

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

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

(3) int* const fun3()

调用时 int * const pValue = fun3();

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

=======================

7、修饰类对象/对象指针/对象引用

const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。

const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。

例如:

class AAA

{

   void func1();

   void func2() const;

}

const AAA aObj;

aObj.func1(); ×

aObj.func2(); 正确

const AAA* aObj = new AAA();

aObj->func1(); ×

aObj->func2(); 正确

=======================

8、修饰成员函数

const修饰类的成员函数,一般写在函数的最后来修饰。

class A

{

   …

   void function()const; //常成员函数, 它不改变对象的成员变量. 也不能调用类中任何非const成员函数。

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值