嵌入式开发为什么学习C++?
C语言为面向过程的语言,需求简单而固定,复用性、拓展性、维护性差。
C++为面向对象的语言,复用性强,拓展性强,维护性强。
C++ = C语言+面向对象的方法论
C++支持的编程模式:
主流:过程式面向对象泛型模式
其他:数据抽象基于对象模板元形式
设计模式:
简单工厂模式
工厂模式
适配器模式
代理模式
值语义与对象语义
值语义可以拷贝与赋值,对象语义不可以拷贝与赋值
register关键字的升级
C:请求CPU尽可能的将变量存放在寄存器中,减少抓取时间,提高处理速度,但不可对register修饰的变量取地址。
C++:可对register修饰变量取地址,但取地址后变量会从寄存器中优化到内存中,其他与C相同。
const关键字的升级
C语言中:const修饰变量为只读变量,不可使用变量名修改的,但是可用其他方式修改其空间内容。
C++中:不可用任意方式修改其空间内容,相当于常量。
内存分配与释放
char * ptr = new char[100];
delete[100] ptr
char * p = new char;
delete p;
new与malloc区别:
new是C++的运算符
malloc为C语言中的函数
new以类型为单位
malloc以字节为单位
new在申请单个类型变量时可初始化
malloc不可在申请变量时初始化
例:int * p = new int (5);此时p指向的空间内容就为5.
但对数组的初始化一般使用memset函数,可用而不用char * p = new char[100]:{};