C/C++培训
美国上市C/C++培训机构

400-111-8989

热门课程

C++语言面试后台开发需要具备的技能和知识

  • 时间:2017-05-12
  • 发布:C++培训
  • 来源:C++职场

推荐书籍:《C++primer》

相关读书笔记专栏:重学C++之读书笔记

1. 虚函数
实现多态所必须, 当有虚函数时,类会有一个虚表,对于一个实例,会有一个虚指针(只有
一个)指向虚表,执行前查表。
有子类时,析构函数必须是虚函数。构造函数不能是虚函数(指针未构造)。
构造析构调用虚函数不起作用:未初始化 or 已被销毁。
另一个优点:实现封装。
2. 智能指针
智能指针是一个类, 构造函数中传入一个普通指针( explicit 显式),析构函数中释放传
入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放。
std::auto_ptr:转移所有权。 不支持复制(拷贝构造函数)和赋值( operator =),但复制
或赋值的时候不会提示出错。因为不能被复制,所以不能被放入容器中。
unique_ptr,也不支持复制和赋值,但比 auto_ptr 好,直接赋值会编译出错。实在想赋值
的话,需要使用:std::move 或者 右边是一个临时对象。
shared_ptr,基于引用计数。
weak_ptr,弱引用, 只引用,不计数。引用计数有一个问题就是互相引用形成环,这样两个
指针指向的内存都无法释放。 weak_ptr 不保证它指向的内存一定是有效的,在使用之前需
要检查 weak_ptr 是否为空指针。
3. 模板特化: 特化(函数、类)、偏特化(类、指针、引用), template<>
4. extern
外部变量声明( 在其他模块找定义), 还可用来指定链接( extern ‘C’)
Const 变量要能在外部访问,定义时要加 extern。
5. volatile: 可能会意想不到地改变,直接从内存存取(不用寄存器缓存)
6. 指针 vs 引用
非空区别:引用必须指向某对象,指针可为空;
合法性区别:指针可为空,所以用前要检查;
指向可修改区别;
指针要解引用;sizeof 结果不同;自增意义不同;引用不分配内存。
7. Static
1.隐藏(仅当前文件可见);2.内容持久;3.初始化为 0;
4.C++:属于类不属于对象,必须类外定义(不加 static),无 this 指针,只能访问 static 成员
8. 内存分布: 程序代码区、文字常量区、全局/静态区、 heap(-->)、 stack(?)
9. Const vs #define : Const 有类型检查,安全。
10. 只能用初始化列表: const,引用成员变量
11. 指针 & 数组名: 前者可移动,后者不可变, sizeof 不一样
12. Sizeof:求字节数,不进行计算、不能求动态分配的内存大小。
13. 内存对齐: 1.自身对齐:地址为自身大小的整数倍; 2.整体对齐:为最大成员的整数倍。
14. 为什么要有继承:1.清楚定义对象的特性,减少冗余代码;2.多态性;3.重用
上一篇:写给C++程序员的职业发展方向和规划
下一篇:C/C++语言经典面试题50道,C/C++面试知识点题目

C++入们知识点:C++语言的概述

学了C语言到底能做什么,能从事什么工作?

C/C++程序员求职简历模板

2017年腾讯C++开发岗位面试题20道

选择城市和中心
贵州省

广西省

海南省