首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++面试若干有关问题

2013-10-12 
C++面试若干问题题目(1)定义一个空类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到结果是()A、

C++面试若干问题
题目(1)

定义一个空类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到结果是()

A、 0           B、 1            C、 4           D、8

【解析】B

空类型的实例中不包含任何信息,本来求sizeof应该是0,但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例,至于占用多少内存,

由编译器决定,Visual Studio中每个空类型的实例占用1个字节的空间。



题目(2)

如果在该类型中添加一个构造函数和析构函数,在对该类型求sizeof,得到的结果是()

A、 0           B、 1            C、 4           D、8

【解析】B

调用构造函数和析构函数只需要知道函数的地址即可,而这些函数的地址只与类型有关,而与类型的实例无关,编译器也不会因为这两个函数而在实例内添加额外的信息。


题目(3)如果把析构函数标记为虚函数呢?【解析】c++编译器一旦发现一个类型中有虚拟函数,就会为该类型生成虚拟函数表,并且在该类型的每一个实例中添加一个指向虚函数表的指针。在32位机器上,一个指针占4个字节的空间,因此求sizeof得到4;如果在64位机器上,一个指针占8字节的空间,因此求sizeof则得到8题目(4)

下面是C++语言中两种if语句判断方式。请问哪种写法更好?为什么?

// 主函数int main(){int n;// 第一种判断方式if(n == 10) {}// 第二种判断方式if(10 == n) {}return 0;}

【解析】第二种

第二种方法如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=

第一种不会报错  会变为赋值语句

来源:剑指Offer(何海涛)

题目(5)

32位环境下,int *p=new int[10];请问sizeof(p)的值为()

A、4   B、10   C、40   D、8

【解析】A

指针就是一个地址值,在32位系统下,占用4个字节,
用sizeof求枚举类型的长度,等于一个int型的长度,而与有几个枚举值无关.所以a也是占4个字节

来源:2014迅雷校园招聘


题目(6)

我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能不能同时用static和const修饰类的成员函数?
【解析】

答案是不可以。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this指针的。也就是说此时static的用法和const是冲突的。

我们也可以这样理解:两者的语意是矛盾的。static的作用是表示该函数只作用在类型的静态变量上,与类的实例没有关系;而const的作用是确保函数不能修改类的实例的状态,与类型的静态变量没有关系。因此不能同时用它们。

来源:剑指Offer(何海涛)





热点排行