面试共济

class Number {
public:
string type;
Number(): type(“void”) { }
explicit Number(short) :type(“short”) { } //这里显式构造,防止隐式转换.
Number(int) : type(“int”) { }
};
void Show(const Number& n) { cout << n.type; }
void f()
{
short s = 42;
Show(s);        //这里首先需要对s的数据类型自动转换到int型,所以使用Number(int)这个构造函数
//结果答案为C.
}
a) void
b) short
c) int
d) None of the above

 

 

1.
What is displayed when f() is called given the code:
class Number {
public:
string type;

Number(): type(“void”) { }
explicit Number(short) : type(“short”) { }
Number(int) : type(“int”) { }
};
void Show(const Number& n) { cout << n.type; }
void f()
{
short s = 42;
Show(s);
}
a) void
b) short
c) int
d) None of the above

2. Which is the correct output for the following code
double dArray[2] = {4, 8}, *p, *q;
p = &dArray[0];
q = p + 1;
cout << q – p << endl;
cout << (int)q – (int)p << endl;
a) 1 and 8
b) 8 and 4
c) 4 and 8
d) 8 and 1

第一个选C;
虽然传入的是short类型,但是short类型的构造函数被生命被explicit,也就是只能显示类型转换,不能使用隐式类型转换。
第二个选A;
第一个是指针加减,按照的是指向地址类型的加减,只跟类型位置有关,q和p指向的数据类型以实际数据类型来算差一个位置,因此是1。而第二个加减是实际指针值得加减,在内存中一个double类型占据8个字节,因此是8

 

 

1.  main()  

2.  {  

3.  union/*定义一个联合*/  

4.  int i;  

5.  struct/*在联合中定义一个结构*/  

6.  char first;  

7.  char second;  

8.  }half;  

9.  }number;  

10.   number.i=0x4241; /*联合成员赋值*/  

11.   printf("%c%c\n",number.half.first, mumber.half.second);  

12.   number.half.first='a'/*联合中结构成员赋值*/  

13.   number.half.second='b';  

14.   printf("%x\n", number.i);  

15.   getch();  

16.   }  

main()

{

union{ /*定义一个联合*/

int i;

struct{ /*在联合中定义一个结构*/

char first;

char second;

}half;

}number;

number.i=0x4241; /*联合成员赋值*/

printf("%c%c\n",number.half.first, mumber.half.second);

number.half.first='a'; /*联合中结构成员赋值*/

number.half.second='b';

printf("%x\n", number.i);

getch();

}

答案: AB (0x41对应'A',是低位;0x42对应'B',是高位)。

a=0x61, b=0x62,按照低位低地址,高位高地址的原则,得答案0x6261 (number.inumber.half共用一块地址空间)。

 

1设计模式:

整全两模块;

只要用另一模块的一部分,屏蔽其它功能;

有多种类,有类似的信息,扩展、复用差;

两个类的变数之间建立联系;

 

2EXE中可以释放DLL中的申请的内存吗?

3.delete Delete[]的区别;

4. Explicit

5. Com的三个基本接口。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值