概述
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修饰的*val3为char类型的常量,即val3指向的为常量,与前两行等价。
*val = 'b';//错误,val所指向的为常量
*(val2+2) = 'c';//错误,const修饰的是char*,val2所指向的为常量
val = "aaa";//正确,val不受const控制,可以更改它指向的地址值
const char* p;//正确,可以不用初始化
=======================
3、修饰指针
char* const p = "qqq";//const修饰的是指针p,p为常量指针
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成员函数。
}
最后
以上就是微笑猎豹为你收集整理的const总结的全部内容,希望文章能够帮你解决const总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复