CPP中的CONST总结

CPP中的CONST总结

ID:40527050

大小:23.20 KB

页数:7页

时间:2019-08-04

CPP中的CONST总结_第1页
CPP中的CONST总结_第2页
CPP中的CONST总结_第3页
CPP中的CONST总结_第4页
CPP中的CONST总结_第5页
资源描述:

《CPP中的CONST总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++中const总结对于基本声明1.constintr=100;//标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换2.extendconstintr=100;//将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义3.constintr[]={1,2,3,4};structS{inta,b;};constSs[]={(1,2),(3.4)};//以上两种都是常量集合,编译器会为其分配内存,所以不能在编译期间使用其中的

2、值,例如:inttemp[r[2]];这样的编译器会报告不能找到常量表达式对于指针1.constint*r=&x;//声明r为一个指向常量的x的指针,r指向的对象不能被修改,但他可以指向任何地址的常量2.intconst*r=&x;//与用法1完全等价,没有任何区别3.int*constr=&x;//声明r为一个常量指针,他指向x,r这个指针的指向不能被修改,但他指向的地址的内容可以修改4.constint*constr=&x;//综合1、3用法,r是一个指向常量的常量型指针对于类型检查可以把一个非const对象赋给一个指向const的指针,因为有时候我们不想从这个指针来修改其

3、对象的值;但是不可以把一个const对象赋值给一个非const指针,因为这样可能会通过这个指针改变指向对象的值,但也存在使这种操作通过的合法化写法,使用类型强制转换可以通过指针改变const对象:constintr=100;int*ptr=const_cast(&r);//C++标准,C语言使用:int*ptr=(int*)&r;对于字符数组如char*name=“china”;这样的语句,在编译时是能够通过的,但是”china”是常量字符数组,任何想修改他的操作也能通过编译但会引起运行时错误,如果我们想修改字符数组的话就要使用charname[]=“china”;

4、这种形式。对于函数1.voidFuction1(constintr);//此处为参数传递const值,意义是变量初值不能被函数改变2.constintFuction1(int);//此处返回const值,意思指返回的原函数里的变量的初值不能被修改,但是函数按值返回的这个变量被制成副本,能不能被修改就没有了意义,它可以被赋给任何的const或非const类型变量,完全不需要加上这个const关键字。但这只对于内部类型而言(因为内部类型返回的肯定是一个值,而不会返回一个变量,不会作为左值使用),对于用户自定义类型,返回值是常量是非常重要的,见下面条款3。3.ClassCX;//内部

5、有构造函数,声明如CX(intr=0)CXFuction1(){returnCX();}constCXFuction2(){returnCX();}如有上面的自定义类CX,和函数Fuction1()和Fuction2(),我们进行如下操作时:Fuction1()=CX(1);//没有问题,可以作为左值调用Fuction2()=CX(1);//编译错误,const返回值禁止作为左值调用。因为左值把返回值作为变量会修改其返回值,const声明禁止这种修改。4.函数中指针的const传递和返回:intF1(constchar*pstr);//作为传递的时候使用const修饰可以保证不

6、会通过这个指针来修改传递参数的初值,这里在函数内部任何修改*pstr的企图都会引起编译错误。constchar*F2();//意义是函数返回的指针指向的对象是一个const对象,它必须赋给一个同样是指向const对象的指针。constchar*constF3();//比上面多了一个const,这个const的意义只是在他被用作左值时有效,它表明了这个指针除了指向const对象外,它本身也不能被修改,所以就不能当作左值来处理。5.函数中引用的const传递:voidF1(constX&px);//这样的一个const引用传递和最普通的函数按值传递的效果是一模一样的,他禁止对引用的

7、对象的一切修改,唯一不同的是按值传递会先建立一个类对象的副本,然后传递过去,而它直接传递地址,所以这种传递比按值传递更有效。**另外只有引用的const传递可以传递一个临时对象,因为临时对象都是const属性,且是不可见的,他短时间存在一个局部域中,所以不能使用指针,只有引用的const传递能够捕捉到这个家伙。对于类1.首先,对于const的成员变量,只能在构造函数里使用初始化成员列表来初始化,试图在构造函数体内进行初始化const成员变量会引起编译错误。初始化成员列表形如:X::X(int

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。