欢迎来到天天文库
浏览记录
ID:38835447
大小:1.35 MB
页数:148页
时间:2019-06-20
《c++笔试题汇总更新400道》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、C++笔试面试1000题1.什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。2.指针和
2、引用的区别?答:引用是在C++中引入的。它们之间的区别有:(1)非空区别:指针可以为空,而引用不能为空(2)可修改区别:如果指针不是常指针,那么就可以修改指向,而引用不能(3)初始化区别:指针定义时可以不初始化,而引用在定义的时必须初始化3、为什么构造函数不能声明为虚函数?答:因为虚函数采用的是虚调用的方法,虚调用是指允许在只知道部分信息的情况下的工作机制,特别允许我们调用一个只知道接口而不知道其对象的准确类型的函数。但是如果我们要调用构造函数创建对象时,必须要知道对象的准确类型,因此构造函数不能
3、为虚函数。4.charstr1[]=”abc”;charstr2[]=“abc”;str1==str2为FALSE,因为str1和str2是位于堆栈上的,它们占用不同的内存空间。Constcharstr3[]=“abc”;constcharstr4[]=“abc”;str3==str4为FALSE,同样它们是位于堆栈上的内存空间,是不同的。Constchar*str5=”abc”,constchar*str6=”abc”;char*str7=”abc”,char*str8=“abc”,str5==
4、str6str7==str8为TRUE,因为”abc”是位于文字常量区的,系统会将几个“abc”进行优化,使它们位于同一块内存区,因此指针的指向也就相同了。5.以下函数能求出数组的长度吗?voidfun(charstr[]){intlen=sizeof(str)/sizeof(str[0]);}答:不能,数组作为参数传递给函数时,数组名被退化为指针,因此函数中的sizeof(str)实际是在求一个指针的sizeof,答案为4,因此不能计算出数组的长度。1486.类的静态成员和非静态成员有何区别?答
5、:类的静态成员每个类只有一个,静态成员为所有类的实例对象共享,静态成员有静态成员变量和静态成员函数,静态成员变量使用前必须初始化,静态成员变量可以被静态成员函数和非静态成员函数访问,而静态成员函数只能访问静态成员变量,因为静态成员函数属于类,其没有this指针。非静态成员每个对象都有一个。7.static的有什么作用(包括在类中)?答:(1)函数体内的静态变量,其值在函数的调用过程中保持不变。跟局部变量的区别。(2)在函数体外定义的静态变量,限制了它的使用范围只在于该子模块,该子模块内的函数都能访
6、问它,但是子模块外不能访问,实际就类似于是一个本地的全局变量。与一般全局变量的区别。(3)类的静态成员函数。本质上来说,static就是声明了对象的生成期,限制了对象的作用域。或(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只能被分配一次,因此其值在下次函数调用时仍维持上次的值。(2)在模块内的static全局变量可以被模块内的所有函数访问,但不能被模块外其他函数访问。(3)在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声
7、明它的模块。(4)在类中的static成员变量属于整个类所有,对类的所有对象只有一份拷贝。(5)在类中的static成员函数属于整个类所有,这个函数不接受this指针,因而只能访问类的static成员变量。8.写程序,将一个字符串倒序?答:直接在main函数中实现的voidmain(){char*source="hello";char*des;intlen=strlen(source);des=(char*)malloc(len+1);//申请空间必须是len+1,加1是为了放结束符if(!des
8、){exit(1);}char*s=&source[len-1];char*d=des;while(len--!=0){*d++=*s--;}148*d=' ';//必须要cout<
此文档下载收益归作者所有