概述
再复习一遍之前写过的文章,因为没有格式化,所以看起来不舒服,同时也为了再顺一遍知识点。
c++备考
备考思路:掌握语法,上机实践,课后题
C++对C增强的两个方面?
在原来面向过程的机制基础上,增强了C语言对类型的处理
增加了面向对象的机制。
C++语言的特点??
>>与<<
自己定义的数据类型不能使用>>或<<进行输入输出,必须进行运算符重载后才可使用。
命名空间
命名空间1,为了解决重名的问题。
C++新标准就是将标准类库中的头文件与一般的头文件(需要使用扩展名“.h")区分开来,当然也可以自己定义符合标准库的头文件,使用这种头文件时,也需要同时使用命名空间语句。
使用C库中的头文件,需要使用扩展名”.h"形式,如 < math.h > 和< stdio.h >。如果使用C++提供的头文件,则不需要使用“.h",如.注意:C++库中替代C库中的头文件的正确名称,使用替代<math.h>.
形参赋值
函数声明时,形参的赋值一定是从后面(右面)往前赋,若右面没赋就会报错。不允许出现如下形式:
void fun(int a=1,int b);//这里其实是和编译原理相关,采用了中缀,符合人的处理逻辑,先处理a的话,就得先将b入栈,这里声明没有赋初值,也就是没有在内存中分配空间,所以会出错。
引用:
变量起了一个别名,引用同一个地址,所以形参为引用时,其实是传递的数据首地址。并且对象在引用前,必须进行初始化。
const修饰符和预处理程序
-
C语言一般使用#define定义常量,在C++中,建议使用const代替宏。
-
const放在语句定义之前,因此可以进行类型判别。也可以使用宏定义,但预处理只是进行简单的文本代替而不进行语法检查,所以会存在一些问题。
因为被const修饰的变量的值在程序中不能被改变,所以在声明符号常量时,必须对符号常量进行初始化,除非这个变量使用extern修饰的外部变量。
const *p:表示指针所指的数据是常量。
int *const p:表示指针变成一个常量指针 -
预处理语句有3种,宏定义(#define)、文件包含(#include)、条件编译(#if #else)。
-
包含尖括号:先在C++系统设定的目录中寻找包含文件,没有找到就到指定的目录中去寻找。也就是先找系统目录,再找项目目录
双引号:引用自己定义的包含文件(一般都放在自己定义的指定目录中)这将通知C++编译器在用户当前的目录下或指定的目录下寻找包含文件。指定的目录不必在同一个逻辑盘中。也就是先找项目目录,再找c/c++库或包含的其他库文件
内联函数
场景是频繁调用,代码较少。实质是将代码复制到调用处。
格式:
inline 返回值类型 函数名(形参)
{ 函数体 }
重载
函数名一样,参数类型不一样。
new
申请内存地址
指针名=new 类型名;
delect
delect 指针名;
释放数组
delect []指针名
例子
#include <iostream>
using std::cout;
struct A {
int a_;
};
int main()
{
A *a1 = new A;
delete a1;
A *a2 = new A[10];
delete[] a2;
return 0;
}
c++中字符串
string变量是可以相互赋值的。
面向过程编程的特点??
C++语言的标准模板库(Standard Templete Library,STL)提供了与要操作的元素类型无关的算法,不仅使许多复杂问题迎刃而解,而且也将面向对象的程序设计问题转化基于对象的面向过程的编程。
这就是还要学习C++编程意义。面向对象是建立的过程的基础上的,只有设计好了过程才能向其他对象提供更有效率的对象调用。
c++复习下一篇C++复习之面向对象
什么是命名空间???将程序库(不要多想,就是程序库,如数学处理函数库,还有c++类库等)名称封装起来的方法;它提高了程序的性能和可靠性。如何提高的呢???相当于在c库前面又加了一个索引,这样起到一个双保险的作用,又提高查找速度。 ↩︎