您的位置:首页 > 职场人生

面试题:6个问题

2015-08-17 17:47 561 查看
1.当参数*x==1,*y==1,*z==1时,下列不可能是函数add的返回值的(D)?
int add(int *x,int *y,int *z)
{
*x += *x;
*y += *x;
*z += *y;
return *z;
}
A.4 B.5 C.6 D.7
解析:
1.当x,y,z指向同一快地址时,z=8。
2.当只有x,y指向同一快地址时,z=5。
3......x,z.................,z=4。
4......y,z.................,z=6。

2.C++中,为了让莫个类只能通过new来创建(即如果直接创建对象,编译器会报错),应该(B)
A.将构造函数设置为私有。
B.将析构函数设置为私有。
C.将构造函数和析构函数均设置为私有。
D.没有办法做到。
解析:
编译器在为类对象分配栈空间时,会先检查类的所有非静态函数的访问性,
包括析构函数,如果类的析构是私有的,则编译器不会在栈空间上为类分
配内存。

3.经过强制转换后,变量a,b的值分别为多少?
short a = 128;
byte b = (byte) a;
答案:128 -128(截取的是后4位).

4.32位机上根据下面的代码,问那些说法是正确的?(C)
signed char a = 0xe0;
unsigned int b = a;
unsigned char c = a;
A.a>0&&c>0为真。
B.a==c为真。
C.b的十六进制表示是:0xffffffe0。
D.以上都不对。
解析:
对于B选项,编译器首先检查关系表达式"==" 左右两边a ,c的类型,
如果某个类型是比int的位宽小的类型,就会先进行Integer Promotion,
将其提升为int类型,至于提升的方法,是先根据原始类型进行位扩展
(如果原始类型为unsigned ,进行零扩展,如果原始类型为signed,进
行符号位扩展)至32位,再根据需要进行unsigned to int 形式的转换。
因此:a 为signed char    型,位宽比int小,执行符号位扩展,被提升
为 0xffffffe0;c 为unsigned char型,位宽比int小,执行零扩展,被提
升为 0x000000e0;

5.纯虚基类是不能被实例化的。

6.虚函数可不可以重载为内联函数。
虚函数可以是内联函数。虚函数与普通函数的主要区别是否具有运行
时的多态性,虽然会被内联展开,可是并不影响多态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: