面试题:6个问题

来源:互联网 发布:阿里巴巴商机助理 mac 编辑:程序博客网 时间:2024/05/22 07:07
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.虚函数可不可以重载为内联函数。虚函数可以是内联函数。虚函数与普通函数的主要区别是否具有运行时的多态性,虽然会被内联展开,可是并不影响多态。

1 0
原创粉丝点击