C/C++校招笔试面试经典题目总结四

今天阿里电话面试了,感觉自己答得不算好,没别的办法,好好学习....重要的事情说三遍,基础,基础,基础...

题目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,没有对象,则不占空间。

题目33下列代码的输出结果是什么?

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值