今天阿里电话面试了,感觉自己答得不算好,没别的办法,好好学习....重要的事情说三遍,基础,基础,基础...
题目31:下列代码编译时会产生错误的是()?
#include <iostream>
using namespace std;
struct Foo
{
Foo() { }
Foo(int) { }
void fun() { }
};
int main(void)
{
Foo a(10); //语句1
a.fun(); //语句2
Foo b(); //语句3
b.fun(); //语句4
return 0;
}
解析:答案应该是语句4,因为语句3没有声明一个b的Foo类型,而是定义了一个无参数的返回类型为Foo的函数b。如果要声明一个Foo,并调用默认构造函数,那么应该是这样的:Foo b;
题目32:下列代码中sizeof(a)的值是()
<h1><span style="background-color: rgb(240, 240, 240); font-family: 'microsoft yahei'; font-weight: normal;"><span style="font-size:10px;">class A </span></span></h1>{ int i;
union U
{
char buff[13];
int i;
}u;
void foo() { }
typedef char* (*f)(void*);
enum{red, green, blue} color;
}a;
解析:这里有union和enum类型,分别有对象u和color,还有int型的i,这时要算大小的话,union的大小根据其中最大的数据类型的大小决定,而enum的大小是4,所以这个题目的答案是24。但是如果enum的语句是这样的:enumcolor{red, green, blue};那么这只是声明了一个enum,没有对象,则不占空间。