C++C++面试C++

C++研发工程师笔试题/面试题(11-20)

2018-07-24  本文已影响4人  编程半岛

11. C++中const关键字作用有哪些?

参考链接
题目来源
https://blog.csdn.net/j8121/article/details/51926711

12. C++中的成员函数是否可以同时用static和const修饰?

我们在定义类的对象时,实际上只给了该类对象的非静态的数据成员分配内存空间(假设没有虚函数),而该类的静态成员变量成员函数在编译的时候分配到一个公共的空间里,所以,在定义一个对象并调用类对象的函数的时候,函数根本不知道到底是哪个对象调用了它,该怎么办?
C++利用传递的this指针的方式实现,调用一个类对象里的函数的时候,将把这个对象的this指针传递给它,以便函数对该对象的数据进行操作。对于一个定义了const的函数,传递的是const this指针,说明不能更改对象的属性。而对于static修饰的函数不需要传递传递this指针,所以不需要const来修饰static的函数。
从对象模型的角度来说:**类的非static函数在编译期间会扩展的加上一个this参数,const的成员函数被要求不能修改this所指向的这个对象;而static函数编译的时候并不会扩展的加上this参数,自然无所谓的const

参考链接
题目来源
C++ static、const和static const 以及它们的初始化

13. 下面三个变量分别代表什么含义?

const int* ptr;
int const* ptr;
int* const ptr; 

参考链接
题目来源
const修饰符

14. C++中包含哪几种强制类型转换?他们有什么区别和联系?

参考链接
题目来源
C++中四种强制类型转换区别详解

15. 简述C++虚函数作用及底层实现原理 ?

C++中虚函数是使用虚函数表虚函数表指针实现。虚函数表是一个类的虚函数的地址表,用于索引类本身以及父类的虚函数的地址,假如子类的虚函数重写了父类的虚函数,则对应的在虚函数表中会把对应的虚函数地址替换为子类的虚函数的地址。虚函数表指针存在于每个对象中(通常出于效率考虑,会放在对象的开始地址处),它指向对象所在类的虚函数表的地址。在多继承情况下,会存在多个虚函数表指针分别指向对应的不同基类的虚函数表。

参考链接
题目来源
关于C++虚函数表的那些事儿

16. 虚函数实现机制,虚继承在sizeof中有没有影响,构造函数能否为虚函数,与纯虚函数?

参考链接
题目来源及参考答案第4题

17. 对一个类求sizeof需要考虑的内容?

参考链接
题目来源及参考答案第6题
struct/class等内存字节对齐问题详解

18. 一个对象访问普通成员函数和虚函数哪个更快?

参考链接
题目来源及参考答案

19. 简述C++中虚继承的作用及底层实现原理?

参考链接
题目来源及参考答案
被遗弃的多重继承

20. 枚举类的定义与使用

声明枚举变量三种方法
1、先声明枚举类型后定义枚举类型变量

enum WeekdayType  
{  
    sun,mou,tue,wed,thu,fri,sat  
};  
enum WeekdayType today,yesterday,tomorrow;

2、声明枚举类型的同时定义枚举类型变量

enum WeekdayType  
{  
    sun,mou,tue,wed,thu,fri,sat   
}today,yesterday,tomorrow;

3、直接定义枚举类型变量

enum  
{  
    sun,mou,tue,wed,thu,fri,sat  
}today,yesterday,tomorrow;

参考链接
题目来源及参考答案

腾讯校招技术岗面试经历及总结(已发offer)

上一篇下一篇

猜你喜欢

热点阅读