0x01:C/C++语言(22个问题)
1、 谈谈你对C和C++的编程差异理解
1:C++引入面向对象的机制 同时键入C语言
2:三大特新 封装 继承 多态
3:复用性高 引入模板的概念
4:不断发展 有新特性 C++11nullptr auto lambda表达式 右值引用 智能指针
2、 static关键字在C语言和C++中各自有哪些不同用法?
C/C++ 隐藏,保持变量的永久性 默认初始化为0
修饰类成员变量和成员函数(属于类的,共享这一静态存储区域)C++独有
Static成员函数只能访问static成员变量和成员函数 没有this指针
普通成员函数可以访问类中的任意成员;有this指针
3、union是什么,有什么用?
共用体 同一内存区域创建多个类型变量 目的是节省空间和减少创建多个变量的花销。特点如下
1:union多个成员共享一块内存区域 同一时刻只存在一个成员变量
2:union共用体的长度等于 大小等于最大的那个变量的长度,从低地址开始
3:union不同成员赋值 会覆盖其他成员的值
4、volatile关键字是做什么用的?
每次从内存中读取最新的值,而不是从寄存器里读取,多线程中可能意想不到的改变了但是程序会优先读取寄存器中的值读取的不是最新值
三个应用场景:
外围设备的特殊功能寄存器
在中断服务函数中中修改全局变量
在多线程中修改全局变量
5、函数调用过程在汇编层面如何进行?
1:参数传递 通过寄存器
2:函数返回地址入栈
3:代码寻址执行
4:结果返回
6、面向对象有哪些基本特性?
封装 继承 多态
7、多态是如何实现的?
利用虚函数,基类指针指向派生类就使用派生类的成员,指向基类就使用基类成员
虚函数是虚函数表+虚表指针
8、编程实现一个单例模式
#include <iostream>
#include <mutex>
using namespace std;
/单例模式,懒汉式
class sigleIntance
{
public:
static sigleIntance* GetsigleIntance(</