第1章 开始
介绍C++的部分基础内容,包括输入输出、注释、类等。
1.2 输入输出
C++没有定义输入和输出语句,但包含了一个标准库来提供I/O机制,一般使用iostream库。包括以下4个I/O对象:
(1)cin:标准输入;
(2)cout:标准输出;
(3)cerr:标准错误,输出警告和错误消息;
(4)clog:输出程序运行时的一般性信息。其中cin是istream对象,其他三个是ostream对象。
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
return 0;
}
每个使用标准库的程序都应包含相关的头文件,需用#include
指令声明。
#include < >
:引用编译器的类库路径里面的头文件,如使用iostream标准库,则需使用#include <iostream>
声明。
#include " "
:引用程序目录的相对路径中的头文件。
输出
std::cout << "Enter two numbers:" << std::endl;
前缀std::
指定cin、cout和endl是定义在名为std的命名空间(namespace)中的,命名空间可避免名字定义冲突以及使用库中同名冲突。标准库定义的所有名字都在命名空间std中。
输出运算符<<
的左侧运算对象必须是ostream对象,右侧是要打印的值,<<
将给定的值写入给定的ostream对象,返回左侧运算对象,则语句等价于:
(std::cout << "Enter two numbers:") << std::endl;
std::cout << "Enter two numbers:" ;
std::cout << std::endl;
写入endl的作用是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷新可保证目前为止程序产生的所有输出都写入了输出流中,而不是仅在内存中等待写入流。
输入
int v1 = 0, v2 = 0;
首先初始化变量v1、v2来保存输入值。
std::cin >> v1 >> v2;
与输出运算符类似,输入运算符>>
的左侧运算对象必须是istream对象,右侧是要读入的值,>>
将输入的值写入给定的istream对象,返回左侧运算对象。则语句等价于:
(std::cin >> v1) >> v2;
std::cin >> v1;
std::cin >> v2;
当用键盘向程序输入数据时,需指出文件结束,在Windows系统中,结束输入使用Ctrl + Z然后Enter/Return 。在UNIX和Mac OS X系统中,使用Ctrl + D结束输入。
1.3 注释
两种注释,单行注释和界定符对注释。
单行注释以//
开始,以换行符结束。
另一种以/*
开始,以*/
结束
/*
* 一个注释不能嵌套在另一个注释之内
*/
// 单行注释,双斜线右边所有内容都会被编译器忽略
1.4 控制流
1.4.1 while语句
while (condition)
statement
while语句的执行过程是交替地检测condition和执行statement,直至condition为假为止。
1.4.2 for语句
for (init-statement; condition; expression)
statement
for循环的执行过程如下:
1.4.3 读取数量不定的输入数据
int value = 0;
while (std::cin >> value)
statement
当遇到文件结束符或遇到无效的输入输出时(如读入的值不是整数),istream对象的状态变为无效,while循环结束。
1.5 类
通过定义一个类(class)来定义自己的数据结构,一个类定义了一个类型,以及与其关联的一组操作。例如对于一个书店程序来说,假定类名为Sales_item,头文件Sales_item.h中已经定义了这个类。调用对这个类的操作需要#include "Sales_item.h"
指令。
1.5.2 成员函数
成员函数(member function)是定义为类的一部分的函数,有时也被称为方法(method)。通常以一个类对象的名义来调用成员函数,如类Sales_item类中有成员函数isbn,则可通过以下代码调用:
Sales_item item;
item.isbn() // 括号内放置实参(argument)列表(可能为空)