C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。
本教程是专门为初学者打造的,帮助他们理解与 C++ 编程语言相关的基础到高级的概念。
在您开始练习本教程中所给出的各种实例之前,您需要对计算机程序和计算机程序设计语言有基本的了解。
\n 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 \n 类似,但可能略有区别。
由于流操作符 的重载,对于 \n 和 \n,输出效果相同。
对于有输出缓冲的流(例如cout、clog),如果不手动进行缓冲区刷新操作,将在缓冲区满后自动刷新输出。不过对于 cout 来说(相对于文件输出流等),缓冲一般体现得并不明显。但是必要情况下使用 endl 代替 \n 一般是个好习惯。
对于无缓冲的流(例如标准错误输出流cerr),刷新是不必要的,可以直接使用 \n。
如果我们在一个头文件里声明了一个函数,当我们需要定义这个函数(这个定义是唯一的,也就是只能定义一次),或者需要使用这个函数时,我们在 cpp 中需要 include 这个头文件。
同样地,如果我们在一个头文件里声明了一个类,当我们需要定义类里的成员函数,或者我们需要使用这个类时,我们在 cpp 中需要 include 这个头文件。
对于类的设计者来说,头文件就像他们和类的使用者的一个合同,编译器会强化这一合同,它会要求你在使用这些类里的函数或结构时必须要声明。
先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h 等用这个方法。
首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于 include 自定义的头文件,让系统优先使用当前目录中定义的。
1、在 C++ 中,终端输出换行时,用cout......endl与 \n 都可以,这是初级的认识。但二者有小小的区别,用 endl 时会刷新缓冲区,使得栈中的东西刷新一次,但用 \n 不会刷新,它只会换行,盏内数据没有变化。但一般情况,二者的这点区别是很小的,在大的程序中可能会用到。建议用 endl 来换行。
2、endl 除了写 \n 进外,还调用 flush 函数,刷新缓冲区,把缓冲区里的数据写入文件或屏幕.考虑效率就用 \n。
在没有必要刷新输出流的时候应尽量使用cout \n, 过多的 endl 是影响程序执行效率低下的因素之一。
真正的开发过程中, 尽量避免使用using namespace std;等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和std中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:
包含头文件 stdlib.h,并在主程序中加入system(pause);可以在程序运行完以后使黑框暂停显示,等待输入,而不是闪退。
声明一个命名空间的意思。命名空间在多人合作的时候很有用,因为你定义了变量 a,别人也定义了变量 a,这样就重复定义了。如果你在自己的命名空间中定义了 a,别人在别人的命名空间中定义了 a,这样就不重复了,比如:
std 是系统标准的命名空间,为了和用户定义的名字不重复,所以它声明在 std 这个命名空间中。另外,这个空间也像一个大包一样,包括了系统所有的支持。
::在 C++ 中表示作用域,和所属关系。::是运算符中等级最高的,它分为三种,分别如下:
作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++ 为例避免不同的类有名称相同的成员而采用作用域的方式进行区分。
全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分,例如:
:: 是 C++ 里的作用域分解运算符,“比如声明了一个类 A,类 A 里声明了一个成员函数 void f(),但没有在类的声明里给出f的定义,那么在类外定义 f 时,就要写成 voidA::f(),表示这个 f() 函数是类 A 的成员函数。例如:
在头文件中声明了一个函数或者类,需要定义或者使用这个函数或者类时,需要在 cpp 文件中 include 这个头文件
:会先去系统目录中找头文件,如果没有找到再去当前目录下寻找,像是标准的头文件,如 stdio.h,stdlib.h 使用这个方法。
:会先在当前目录下寻找,如果找不到再去系统目录下寻找,适用于自己定义的头文件
声明一个命名空间,在多人合作时,即使有函数同名了,但是因为所在的命名空间不同,也不会导致出现错误。

