2017年完美世界校园招聘笔试题
{
memset(this , 0 , sizeof(*this));
}
virtual void func()
{
printf("func\n");
}
};
class classB : public classA
{
};
int main(void)
{
classA oa;
classB ob;
classA * pa0 = &oa;
classA * pa1 = &ob;
classB * pb = &ob;
oa.func(); // 1
ob.func(); // 2
pa0->func(); // 3
pa1->func(); // 4
pb->func(); // 5
return 0;
}
A、func func 执行出错 执行出错 func
B、执行出错 func 执行出错 执行出错 func
C、执行出错 执行出错 执行出错 执行出错 执行出错
D、func func func func func
E、func func 执行出错 func func
F、以上选项都不对
5、在32位系统中
[cpp] view plaincopyprint?
class CBase
{
public:
void func()
{
Print();
}
virtual void Print()
{
cout<<"CBase::Print"<
}
};
class CDerived : public CBase
{
public:
virtual void Print()
{
cout<<"CDerived::Print"<
}
};
int main(void)
{
CDerived c;
CBase *p = &c;
return 0;
}
class CBase
{
public:
void func()
{
Print();
}
virtual void Print()
{
cout<<"CBase::Print"<
}
};
class CDerived : public CBase
{
public:
virtual void Print()
{
cout<<"CDerived::Print"<
}
};
int main(void)
{
CDerived c;
CBase *p = &c;
return 0;
}
请问:
sizeof(*p)的值是多少? (实际上求的就是一个成员变量的大小+一个虚表指针VPTR的大小)
A、1 B、4 C、8 D、12
p->Print(); 和 c.func();的输出分别是?
A、CBase::Print CBase::Print B、CBase::Print CDerived::Print
C、CDerived::Print CBase::Print D、CDerived::Print CDerived::Print
6、
[cpp] view plaincopyprint?
struct Thing
{
int valueA;
const int valueB;
};
Thing t;
struct Thing
{
int valueA;
const int valueB;
};
Thing t;
t的成员变量valueA 和 valueB 的值分别为:
A、0 0 B、垃圾值 0 C、无法运行 D、垃圾值 垃圾值
常成员变量valueB必须在构造函数中进行初始化
7、for(int x = 0 , y = 0; !x && y <= 5 ; y++)语句执行循环的次数是:
A、0 B、5 C、6 D、无数次
8、在Windows 32位操作系统中,假设字节对齐为4,对于一个空的类A,sizeof(A)的值为()
A、0 B、1 C、2 D、4
9、以下对函数指针的定义,哪些是正确的:
A、typedef int (*fun_ptr)(int , int); B、typedef int *(fun_ptr)(int , int);
C、typedef int (fun_ptr*)(int , int); D、typedef *int (fun_ptr)(int , int);
10、在32位系统中,下面结构体
[cpp] view plaincopyprint?
struct st
{
char ch , *ptr;
union
{
short a , b;
unsigned int c : 2 , d : 1;