【无标题】

malloc,free 和 new,delete的区别

  1. 前者是c中库函数,后者是c++中操作符,new可以重载
  2. new自动计算分配内存大小;malloc需要手动计算malloc(sizeof(int))
  3.  new返回对象类型的指针,malloc返回的是void*,使用需要强行类型转换 (int*)malloc(sizeof(int));
  4. new分配失败抛出异常,编译失败;malloc分配失败只会返回NULL;
  5. new分配自由存储区(free store)上的内存;malloc分配的是虚拟内存,分配堆区内存;
  6. delete 需要对象类型的指针,free是void*类型指针;
  7. new的流程:调用操作符new;申请足够的空间;调用构造函数,初始化成员变量;
  8. delete的操作流程:调用析构函数;operator delete;释放空间

虚函数表和虚函数表指针创建时机

  1. 作用 :用来实现多态;使用父类类型的指针调用子类中的成员函数,要求父类该函数是虚函数;
  2. 虚函数表创建时机:编译过程中生成,发现virtual关键字修饰的函数以后;
  3. 存放位置:
  4. 每个类最多只有一个虚函数表,一个类不同对象虚函数表指针不同,但指向的地址是相同的(虚函数表);
  5. 虚函数表指针是指向虚函数表的指针,在类对象构造的时候创建,把类的虚函数表地址赋值给vptr;
  6. 继承的情况下,先调用基类构造函数,把A的虚函数表地址赋给vptr;然后调用子类构造函数,把B的虚函数表地址赋给vptr(如果B中该函数也是虚函数)(会调用两次)

进程和线程区别

  1. 进程是资源分配的基本单位,线程是cpu调度的基本单位,一个进程可能由多个线程完成。
  2. 并发对应进程,多个进程在同一段时间内交替进行;并行对应线程,指多个事件在同一时刻发生(不同线程中)
  3. 进程切换效率低,线程切换效率高(不同进程的线程切换效率等价于进程切换)

TCP和UDP的异同

  1. 二者都是传输层的协议;
  2. tcp面向连接,需要三次握手建立连接,四次挥手断开连接;udp面向无连接;
  3. tcp是端对端的连接,是全双工连接,允许双端同时收发数据;
  4. udp支持一对一,一对多,多对一的数据收发;
  5. tcp基于字节流传输;udp基于报文传输;
  6. tcp是可靠传输,传输效率低;udp不可靠传输,传输效率高;
  7. tcp一般应用于文件传输,网页浏览,远程登录等需要稳定性,对实时性要求不高的场景;
  8. udp一般应用于实时传感器数据,实时游戏,视频流和音频流传输(视频会议,在线直播等);

面向对象的三大特性(封装,继承,多态)

  1. 封装的目的是隐藏功能实现的细节,实现模块化;
  2. 继承的目的是在无需修改原有类的基础上通过继承实现对功能的扩展;继承方式不同继承的最高权限也不同,如class B:public A B保持A中成员的访问权限相同的权限;class B: private A B继承A的成员在B中的访问权限都是private的,如果有C再继承B,是继承不到这些成员的。
  3. 多态的目的是实现一个接口有多种形态,包括函数重载和虚函数重写

左值引用和右值引用区别

  1. 左值引用用于传参过程中和函数返回值避免对象拷贝
  2. 右值引用实现移动语义和完美转发;
  3. 左值具有名称,右值不具有名称,c++11以后可以用std::move()强行将左值转为右值;
  4. 变量名,++i,i+,返回左值引用的函数调用等都是左值;纯右值和将亡值是右值,比如数值10,返回非引用类型的函数调用,i++等是纯右值,将亡值是函数运行结束,原本函数返回的被函数外部调用的值。

引用和指针的区别?

·指针是一个实体,需要分配内存空间,32位机4字节,64位机8字节。引用只是变量的别名,不需要分配内存。

·引用在定义的时候必须初始化,不能更改;指针在定义的时候可以不初始化(但是使用前必须赋值,否则是野指针),并且可以更改(指向的内存)

·存在多级指针,不存在多集引用。

·指针+1是指向下一个空间,引用+1是引用的值+1

·sizeof引用得到的是引用值的大小,sizeof指针是指针的大小。

·引用访问一个变量是直接访问,指针访问是间接访问

·引用底层通过指针实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值