9月5日C++学习笔记

1.CAP理论

在一个分布式系统中,一致性、可用性、分区容错性不能同时成立。

2.C语言与C++的区别

1.C语言是面向过程的语言,C++是面向对象的语言。C++有封装、继承、多态的特点,实现了代码模块化、代码重用、接口重用。
2.C++有引用的概念,C没有引用的概念。
3.C++在动态管理内存上比C的malloc/free多了new/delete。

3.指针与引用的区别

1.指针所指的对象可以改变,引用指向的对象不可以改变,但是其所指对象的值可以改变。
2.指针变量要分配内存空间,引用不用分配内存空间。
3.指针级数不进行限制,但是引用只能是一级。
4.引用不能指向空值,所以不用检测其合法性,指针则要检测,所以其代码效率要比引用低。
5.引用可以被认为是不能改变的指针。

4.struct与union的区别

1.struct(结构体)是不同类型的几个数据占用不同的空间,可以同时存在。
union(共同体)是不同类型的几个数据占用相同的空间,不可以同时存在。

2.sizeof(struct)是内存对齐后,结构体内的数据成员长度的总和。
sizeof(union)是内存对齐后,共同体内最长的数据成员的长度。

5.结构体为什么要内存对齐

1.移植原因:某些平台只能在特定地址取特定类型的数据,否则抛出异常。
2.硬件原因:内存对齐后CPU内存访问速度会快很多。

6.#define和const的区别

1.#define定义的常量没有类型,是一个立即数;const定义的常量有类型名字,存放在静态区域。
2.#define定义的宏变量在预处理时候替换,可以有多个拷贝,const定义的变量在编译时确定其值,只有一个拷贝。
3.#define定义的常量不可以被指针指向,const定义的常量可以被指针指向。
4.#define可以定义简单函数,const不能定义函数。

7.new、delete、malloc、free的区别

1.malloc对开辟的空间大小严格指定,new则只需要对象名。
2.new为对象分配空间时,调用构造函数,delete调用对象的析构函数。

8.为什么有了malloc/free还要有new/delete

运算符是语言自身的特性,有固定的语义,编译器知道意味着什么,由编译器解释语义,生成相应的代码。
库函数是依赖于库的,一定程度上独立于语言的。编译器不关心库函数的作用,只保证编译,调用函数参数和返回值符合语法,生成call函数的代码。
malloc/free是库函数,new/delete是C++运算符,malloc/free不会调用构造和析构函数初始化/析构对象,new/delete则会调用,对于非内部数据而言,malloc/free无法满足动态要求。

9.delete和delete[]区别

delete只会调用一次析构函数,而delete[]会调用每个成员的析构函数;
用new分配的内存用delete释放,用new[]分配的内存用delete[]释放。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值