C++由C语言发展而来,增加了面向对象的机制,并且与C语言兼容,用C语言编写的程序可以不加修改用于C++.
面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率(不是执行效率)
1 C++引入命名空间 Namespace,为了避免命名冲突
指定所使用的变量时需使用::操作符,::操作符是域解析操作符
除了直接使用域解析操作符,还可以使用using声明,using声明不仅仅可以针对命名空间的一个变量,也可以用于声明整个命名空间。
在using声明后,若出现未具体制定命名空间的命名冲突变量,则默认采用
命名空间内部不仅可以声明或定义变量,对于其他能在命名空间以外声明或定义的实体,同样也都能在命名空间内部进行声明或定义,例如变量的声明或定义、函数声明或定义、typedef都可以出现在命名空间。
例子 using namespace std 涵盖std命名空间中的所有标识符,而该命名空间包含C++所有标准库。头文件iostream文件中定义的所有变量、函数都位于std命名空间中,每次使用iostream中的变量或函数都需要在前面加上std::是非常麻烦的事,可直接用using声明将std中的所有变量或函数声明出来。
C++以C语言为基础,继承了所有C语言函数库,但C++对这些标准库都重新命名了
2 C++输入输出
C++程序中,输入输出可以看做一连串数据流,输入即可视为从文件或键盘中输入到程序中的一串数据流,输出则可以视为从程序中输出的一连串的数据流到显示屏或文件。
编写C++程序时,如果需要使用输入输出,需要包含头文件iostream。iostream定义了用于输入输出的对象,cin表示标准输入,cout表示标准输出,cerr表示标准错误。cin cout cerr本质是函数调用,它们的实现采用C++运算符重载,其中cout和cerr的输出目的地都是显示屏,不同是cout带有缓冲,cerr没有。
使用cout紧接着使用<<操作符,cin进行输入时紧接着>>操作符,这两个操作符可以自行分析所处理的数据类型,无需像使用scanf和printf那样设置输入输出格式化语句。
可以使用endl(end of line)代替\n,cin支持多变量连续输入
当使用cin>>val输入变量时,如果输入一个变量到val,则该表达式返回true,否则返回false
3 C++引用
引用类似于指针,只是在声明的时候用&取代了*,引用可以看做是被引用对象的一个别名(引用和原始变量都指向同一地址),在声明引用时,必须对其初始化。
声明方法:
类型标识符 &引用名 = 被引用对象
如果不希望通过引用改变原始变量的值,可以这么声明 const 类型标识符 & 引用名 = 被引用变量。这样常引用无法修改原始变量的值,但可以通过原始变量自身修改原始变量的值
通过修改引用可以修改原始变量的值,通过这一特性使得引用用于函数传递参数和函数返回值是非常有用
(1)函数引用参数
在声明或定义函数的时候将函数的形参指定为引用,则在调用该函数时会将实参直接传递给形参,而不是将实参拷贝给传递给形参。因此,如果在函数体中修改了该参数,则实参的值也会被修改,和普通的传值调用有区别。
(2)函数引用返回值
非void型函数需要返回一个返回值,类似于函数形参,同样将函数返回值声明为引用。普通函数返回值通过传值返回(将关键字return后面紧接的表达式运算结果或变量拷贝到一个临时存储空间,然后函数调用者从临时存储空间中取到函数返回值)