欢迎来到天天文库
浏览记录
ID:46686117
大小:97.50 KB
页数:15页
时间:2019-11-26
《基础题(整理)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一•关于const的一些基础题:1.在什么时候需要使用“常引用”?如果既要利川引川提高程序的效率,乂要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const类型标识符&引用名=H标变量名;例1inta;constint&ra=a;ra=l;//错误a=l;//正确例2stringfoo();voidbar(string&s);那么下面的表达式将是非法的:bar(foo());bar(“helloworld");原因在于foo()和“helloworld”串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const
2、类型的对彖转换为非const类型,这是非法的。引用型参数应该在能被定义为const的情况下,尽量定义为consto2.C++中const有什么用?不要一听到const就说是常量,这样给考官一种在和一个外行交谈的感觉。应该说const修饰的内容不可改变就行了,定义常量只是一种使用方式而己,还冇const数据成员,const参数,const返冋值,const成员苗数等,被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。3・C与C卄各自是如何定义常量的?有什么不同?C中是使用宏#define定义,C++使用更好的const来定义。区别:1)const是有数据类型的常量
3、,而宏常最没有,编译器可以对前者进行静态类型安全检査,对后者仅是字符替换,没有类型安全检査,而.1!在字符替换时可能会产生意料不到的错误(边际效应)。2)有些编译器可以对const常量进行调试,不能对宏调试。4.既然C++中有更好的const为什么还要使用宏?const无法代替宏作为卫哨来防止文件的重复包含。4.下列哪两个是等同的intb;Aconstint*8二&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b;答:各式表示的意思分别为:Aconstint*a二&b;//*a是const,但指针3口J变Bconst*inta
4、=&b;//a是const,但*s可变Cconstint*consta=&b;//a和*a都是const,常量和指针的值都不能改变Dintconst*consta二&b;//玄和*&都是const,常量和指针的值都不能改变因此C,D两者是相同的。总结个技巧:如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。6•请说出static和const关键字尽可能多的作用解答:static关键字至少有下列n个作川:(1)函数体内static变量的作用范围为该函数体,不同J:auto变量,
5、该变暈的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所川函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只口J被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类屮的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;⑸在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。const关键字至少有下列n个作用:(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因
6、为以后就没有机会再去改变它了(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明屮,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值覽例如:constclassAoperator*(constclassA&al,constclassA&a2);oj^erator*的返冋结果必须是-个const对象。如果不是,
7、这样的变态代码也不会编译出错:classAa,b,c;(a*b)=c;//对a*b的结果赋值操作(a*b)=c显然不符合编程者的初衷,也没有任何意义。7.上述三个有什么区别?char*constp;charconst*pconstchar*p解答:char*constp;//常量指针,p的值不可以修改charconst*p;//指向常量的指针,指向的常量值不可以改constchar*p;〃和charconst*p8.关键
此文档下载收益归作者所有