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) voidb) shortc) intd) None of the above2. Which is the correct output for the following codedouble 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 8b) 8 and 4c) 4 and 8d) 8 and 1第一个选C;虽然传入的是short类型,但是short类型的构造函数被生命被explicit,也就是只能显示类型转换,不能使用隐式类型转换。第二个选A;第一个是指针加减,按照的是指向地址类型的加减,只跟类型位置有关,q和p指向的数据类型以实际数据类型来算差一个位置,因此是1。而第二个加减是实际指针值得加减,在内存中一个double类型占据8个字节,因此是8



