嵌入式开发中为什么要学习C++语言?
1.强化C语言编程能力,提高编程的代码质量。
2.帮助学习其他编程语言,建立从面向结构到面向对象的过程。
面向过程编程的特点?
主要解决科学计算问题,用户需求简单而且固定。
特点:
分析解决问题所需要的步骤
利用函数实现各个步骤
依次调用函数解决问题
问题:
软件可重用性差
软件可维护性差
构建的软件无法满足用户需求
面向对象编程的特点?
将现实世界中的事物直接映射到程序中,可直接满足用户需求。
特点:
直接分析用户需求中涉及的各个实体
在代码中描述现实世界中的实体
在代码中关联各个实体协同工作解决问题
优势:
构建的软件能够适应用户需求的不断变化
直接利用面向过程方法的优势而避开其劣势
C++支持的编程范式:
过程式、数据抽象、基于对象、面向对象式、函数式、泛型形式、模板元形式
模式:
设计模式、简单工厂模式、工厂模式、适配器模式、代理模式
值语义与对象语义的区别?
值语义可以拷贝与赋值,对象语义不可以进行拷贝与赋值。
C++之父:贾尼·斯特劳斯特卢普
C++语言的标准:
C++98标准、 C++03标准、 C++11标准、 C++14标准
C++的声明和定义?
C++中更强调语言的“实用性”,所有的变量都可以在使用时再定义。而C语言中的变量都必须在作用域开始的位置定义。
C++中register关键字的变化?
作用:Register关键字请求“编译器”将局部变量存储在CPU内部的寄存器中。
C语言中无法取得register变量的地址。
C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
C++编译器对const常量的处理?
当碰见常量声明时在符号表中放入常量。
编译过程中若发现使用常量则直接以符号表中的值代替
编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间。
注意:C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。
内存分配与释放(new/delete)--------------运算符
C++中的动态内存分配
----C++中通过new关键字进行动态内存申请
----C++中的动态内存申请时基于类型进行的
----delete关键字用于内存的释放
例:变量的申请:
Type* pointer = new Type;
Delete pointer;
数组的申请:
Type* pointer = new Type[N];
Delete [ ] pointer;
New关键字 和 malloc函数 的区别?
New关键字是C++的一部分,malloc是由C库提供的函数
New以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配
New在申请单个类型变量时可进行初始化,malloc不具备内存初始化的特性
引用:引用是给一个变量起别名
定义引用的一般格式: 类型 &引用名 = 变量名;
如: int a = 1;
Int &b = a; //b是a的别名,因此a和b是同一个单元
注意:定义引用时一定要初始化,指明该引用变量是谁的别名
*在实际应用中,引用一般用作参数传递与返回值
Const引用必须是指向const对象的引用。
引用的另一个作用是用于返回引用的函数
函数返回引用的一个主要目的是可以将函数放在赋值运算符的左边。
注意:不能返回对局部变量的引用。
引用与指针的区别?
引用访问一个变量是直接访问,而指针是间接访问
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间
引用一经初始化不能引用其他变量,而指针可以
尽可能使用引用,不得已时使用指针