本文介绍: 1.构造函数不可以定义为虚函数:虚函数的调用需要通过虚函数指针指向虚函数表,虽然虚函数表在编译时就有,但虚函数指针在创建对象之后才有,因此无法调用虚构造函数2.析构函数一般定义为虚函数:在动态多态时,子类继承父类,子类重写父类的虚析构函数,父类指针或引用指向子类,这样就可以通过父类指针调用子类的析构函数释放子类中开辟的内存。
1.static的使用
1)修饰局部变量:在函数内部使用static修饰局部变量,会使它成为静态局部变量。静态局部变量只会被初始化一次,且只有在第一次调用该函数时才会被初始化,之后每次调用该函数时都会保留上一次的值.从原来的栈区存放改为全局区。
2)修饰全局变量:在函数外部使用static修饰全局变量,会使它成为静态全局变量。静态全局变量的作用域仅限于当前文件,即只能在当前文件内被访问,不能被其他文件访问。
3)修饰成员变量:在类中使用static修饰成员变量,会使它成为静态成员变量。静态成员变量的生命周期与程序的生命周期相同,即它只会被初始化一次,且存在于所有类对象之外。静态成员变量在类内部声明,在类外部需要进行定义和初始化。
4)修饰成员函数:在类中使用static修饰成员函数,会使它成为静态成员函数。静态成员函数不依赖于任何类对象,只能访问类的静态成员变量和静态成员函数,不能访问类的非静态成员变量和非静态成员函数。静态成员函数通过类名来访问。
2.const的使用
1)修饰变量:变量的值不能改变
3.指针常量,常量指针,常指针常量
4.指针和引用的异同
5.如何理解多态
6.虚函数表
7.常用数据结构
8.TCP
9.C和C++的区别
10. struct 和class 有什么区别?
11.extern “C”的作用
12.C++重载、重写、多态
13.多态的理解
14.对虚函数机制的理解,单继承、多继承、虚继承条件下虚函数表的结构
15.如果虚函数是有效的,那为什么不把所有函数设为虚函数?
16.为什么要虚继承?
17.构造函数为什么一般不定义为虚函数、析构函数一般定义为虚函数
18.为什么虚函数表中有两个析构函数
19.为什么基类的析构函数要是虚函数
20. volatile 关键字的作用?什么时候需要使用volatile 关键字
21.各种强制类型转换的原理及使用
22.什么时候用指针,什么时候用引用
23.一般什么情况下会出现内存泄漏?怎么用C++在编码层面尽量避免内存泄漏。
24.对面向对象的理解
25.内存分区
26.纯虚函数
27.深拷贝和浅拷贝
28.悬挂指针和野指针、空指针、void指针
29.new和malloc有什么区别
30.malloc的内存可以用delete释放吗
31.malloc出来20字节内存,为什么free不需要传入20呢,不会产生内存泄漏吗?
32.new[]和delete[]一定要配对使用吗?new[]和delete[]为何要配对使用?
33.基类的析构函数一般写成虚函数的原因
34.什么情况下会调用拷贝构造函数
35.为什么拷贝构造函数必须是引用传递而不是值传递
36.指针传递和引用传递的区别
37.成员初始化列表的概念,为什么使用成员初始化列表会快一些
38.静态链接和动态链接
39.虚函数的实现原理
40.指针函数和函数指针
41.内存对齐
c++11
1.了解auto 和decltype 吗?
2.谈一谈你对左值和右值的了解,了解左值引用和右值引用吗?
3.了解移动语义和完美转发吗?
4.平时会用到function、bind、lambda 吗,都什么场景下会用到?
5.enum 和enum class 有什么区别?
STL
1.C++直接使用数组好还是使用std::array 好?std::array 是怎么实现的?
2.STL ⾥ resize 和 reserve 的区别?clear 是怎么实现的?
3.deque 的底层数据结构是什么?它的内部是怎么实现的?
4.map 和unordered_map 有什么区别?分别在什么场景下使用?
5.list 的使用场景?std::find 可以传入list 对应的迭代器吗?
6.string 的常用函数
操作系统
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。