C++知识点汇总:引用、指针、virtual、inline、new、delete

  • C++ 引用和指针的区别
    • 指针一般指的是某块内存的地址,通过这个地址,我们可以寻址到这块内存;而引用是一个变量的别名,例如我们给小明起了个外号
    • 指针可以为空,引用不能为空
    • 引用
      • 引用被称为变量的别名,它不能脱离被引用对象独立存在
      • 引用变量在功能上等于一个指针常量,即一旦指向某一个单元就不能在指向别处
      • 在底层,引用变量由指针按照指针常量的方式实现
      • 引用看做是通过一个常量指针来实现的,它只能绑定到初始化它的对象上
    • 指针
      • 指针p也是对象,它同样有地址&p和存储的值p,只不过,p存储的数据类型是数据的地址。如果我们要以p中存储的数据为地址,来访问对象的值,则要在p前加解引用操作符"*",即*p。
    • 引用和指针,在内存中都是占用4个字节(32bits系统中)的存储空间。指针和引用存放的都是被引用对象的地址,都必须在定义的同时进行初始化。

  • C++中 virtual 与 inline 的含义分别是什么?
    • 在基类成员函数的声明前加上virtual关键字,意味着将该成员函数声明为虚函数。
    • inline与函数的定义体放在一起,使该函数称为内联。inline是一种用于实现的关键字,而不是用于声明的关键字。
    • 虚函数的特点;
      • 如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。
    • 内联函数的特点;
      • 使用内联函数的目的是为了提高函数的运行效率。
      • 内联函数体的代码不能过长,因为内联函数省去调用函数的时间是以代码膨胀为代价的。
      • 内联函数不能包含循环语句,因为执行循环语句要比调用函数的开销大。

  • C++ 有了 malloc/free 为什么还要 new/delete
    • malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。它们都可用于申请动态内存和释放内存。
    • 对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。
    • 由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于 malloc/free。
    • 因此 C++语言需要一个能完成动态内存分配和初始化工作的运算符 new,以及一个能完成清理与释放内存工作的运算符 delete。
    • 注意 new/delete 不是库函数。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值