C++常见面试简答题 || 指针和引用 / 静态绑定动态绑定 / 多态 / STL常见容器 / 智能指针 / C++11新标准
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++常见面试简答题 || 指针和引用 / 静态绑定动态绑定 / 多态 / STL常见容器 / 智能指针 / C++11新标准,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2366字,纯文字阅读大概需要4分钟。
内容图文
![C++常见面试简答题 || 指针和引用 / 静态绑定动态绑定 / 多态 / STL常见容器 / 智能指针 / C++11新标准](/upload/InfoBanner/zyjiaocheng/831/34434ec4c5ae45f8a8c6b1293d030c45.jpg)
文章目录
1、引用和指针的区别
A:定义一个引用变量和定义一个指针变量的汇编指令一模一样,区别是引用变量必须要初始化,指针没有强制要求。
B:通过应用变量修改内存的值和通过指针修改指向内存的值,汇编指令一样,区别是应用更加安全,而指针有可能解引用一个空指针或野指针。
C:指针有一级和多级,而引用只有一级的引用
2、解释静态绑定和动态绑定
静态绑定:指的是函数调用,在编译期间就已经是明确的函数调用。
动态绑定:指的是通过指针或者引用,调用同名覆盖方法,运行时从指定的对象头部取vfptr,间接访问vftable,在vftable中取虚函数的地址,进行函数调用,用指针或者引用调用virtual函数一定会发生动态绑定
3、解释什么是多态
动态的多态:在继承结构中,用积累的指针或引用,指向从该基类继承的派生类对象,调用派生类和基类的同名覆盖方法基类指针指向哪个派生类方法,就调用哪个派生类的方法,这就叫动态的多态,其本质就是动态绑定
静态的多态:
4、请列举你所熟悉的容器并做简要功能描述
Vector:数组容器
Deque:双端队列容器
List:链表容器
Stack:容器适配器 底层依赖deque实现,提供了常用的栈结构的操作
Queue:容器适配器 底层依赖deque实现,提供了单向队列的操作
Priority queue:容器适配器 底层依赖vector实现,提供了一个默认的大根堆结构操作
Set/map:有序关联容器;底层实现是红黑树
Unordered_set/unordered_map:无序关联容器,底层实现是哈希表
5、请列举你所熟悉的智能指针并做简要功能描述
A :auto_ptr:只有最新的auto_ptr指向资源,原来的成为nullptr,使用起来很危险
B :scoped_ptr: 把左值引用的拷贝构造和operator=给delete掉了,不能使用
C :unique_ptr: 把左值引用的拷贝构造和operator=给delete掉了,但是提供了右值引用参数的拷贝构造和operator=函数,支持临时对象拷贝构造或者赋值unique_ptr对象,使用非常安全。
6、请列举你知道的C++11新标准的语法,并做简要功能描述
A: Auto定义变量,可以根据右边的类型,推导左值的类型信息,使用非常方便。
B: Foreach语句,其底层就是通过迭代器来遍历访问容器元素的。
C:Nullptr和NULL的区别是,nullptr是一个指针类型,用来给指针变量做初始化用,而NULL只是一个宏定义,代表整数0,可能会和整数混用。
D:右值引用,大大提供了大对象(临时对象)的拷贝构造和赋值重载的效率问题。
E:Lambda表达式,其底层是函数对象的一个具体实现,但是比函数对象更加灵活,主要使用在泛型算法当中,可以改变算法的运算结果。
F:Thread多线程类库,可以提供语言级别的多线程编程,好处是多线程代码可以跨平台运行。
G:提供了处理更多参数的绑定器和函数对象。
内容总结
以上是互联网集市为您收集整理的C++常见面试简答题 || 指针和引用 / 静态绑定动态绑定 / 多态 / STL常见容器 / 智能指针 / C++11新标准全部内容,希望文章能够帮你解决C++常见面试简答题 || 指针和引用 / 静态绑定动态绑定 / 多态 / STL常见容器 / 智能指针 / C++11新标准所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。