第一个程序
// myfirst.cpp
#include
using namespace std;
int main()
{
cout<<"Hello World!"<<endl;
system("pause");
//cin.get();
return 0;
}
要使窗口一直打开,直到按下任意键。使用cin.get();
与system("pause");
的效果都是一样的。
使用函数来创建C++程序时,通常,先将程序组织为主要任务,然后设计独立的函数来处理这些任务。myfirst.cpp示例程序非常简单,只包含一个名为main()的函数,其包含下述元素。
#include
。int main( )
。using namespace
。main()
函数的return
语句。下面详细介绍这些元素。先来看看main()函数,因为了解了main()的作用后,main()前面的一些特性(如预处理器编译指令)将更易于理解。
如果程序要使用C++输入或输出工具,需要以下两行代码:
#include
using namespace std;
注意:使用cin和cout进行输入和输出的程序必须包含文件iostream。
像iostream这样的文件叫做包含文件(include file),也叫头文件(header file) 。下表对头文件的命名约定进行了总结。
如果使用iostream,而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用:
using namespace std;
这叫做using编译指令。名称空间支持是一项C++特性,旨在让您编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序。
cout<<"Hello World!";
双引号括起的部分是要打印的消息。在C++中,用双引号括起的一系列字符叫做字符串,因为它是由若干字符组合而成的。<<符号表示该语句将把这个字符串发送给cout;该符号指出了信息流动的路径。cout是什么呢?它是一个预定义的对象,知道如何显示字符串、数字和单个字符等。
endl是一一个特殊的C++符号,表示- -个重要的概念:重起一行。 在输出流中插入endl将导致屏幕光标移到下一行开头。诸如endl等对于cout来说有特殊含义的特殊符号被称为控制符(manipulator)。和cout一样,endl也是在头文件iostream中定义的,且位于名称空间std中。
\n被视为-一个字符,名为换行符。
显示字符串时,在字符串中包含换行符,而不是在末尾加上endl,可减少输入量:
cout << "Pluto is a dwarf planet.\n";
cout << "Pluto is a dwarf planet." << endl ;
另一方面,如果要生成一个空行,则两种方法的输入量相同,但对大多数人而言,输入endl更为方便:
cout << "\n";
cout << endl;
本书中显示用引号括起的字符串时,通常使用换行符\n,在其他情况下则使用控制符endl。 一个差别是,endl 确保程序继续运行前刷新输出(将其立即显示在屏幕上);而使用“\n”不能提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示。
iostream 文件定义了<<运算符,以便可以像下面这样合并(拼接)输出:
cout << "Now you have " << carrots << " carrots." << endl;
这样能够将字符串输出和整数输出合并为一条语句。得到的输出与下述代码生成的相似:
cout << "Now you have " ;
cout << carrots;
cout << " carrots" ;
cout << endl ;
根据有关cout的建议,也可以按照这样的方式重写拼接版本,即将一条语句放在4行上: .
cout << "Now you have "
<< carrots;
<< " carrots" ;
<< endl ;
cin >> a;
从这条语句可知,信息从cin流向a。 显然,对这一过程有更为正式的描述。就像C++将输出看作是流出程序的字符流一样,它也将输入看作是流入程序的字符流。iostream文件将cin定义为一个表示这种流的对象。输出时,<< 运算符将字符串插入到输出流中;输入时,cin 使用>>运算符从输入流中抽取字符。通常,需要在运算符右侧提供一个变量, 以接收抽取的信息(符号<<和>>被选择用来指示信息流的方向)。
与cout 一样,cin 也是一个智能对象。它可以将通过键盘输入的一系列字符(即输入)转换为接收信息的变量能够接受的形式。在这个例子中,程序将a声明为一个整型变量,因此输入被转换为计算机用来存储整数的数字形式。
C++提倡使用有一定含义的变量名。如果变量表示差旅费,应将其命名为cost_of _trip 或costOfTrip,而不要将其命名为x或cot。必须遵循几种简单的C++命名规则。
倒数第二点与前面几点有些不同,因为使用像_ time _stop 或_Donut 这样的名称不会导致编译器错误,而会导致行为的不确定性。换句话说,不知道结果将是什么。不出现编译器错误的原因是,这样的名称不是非法的,但要留给实现使用。全局名称指的是名称被声明的位置。
最后一点使得C++与ANSI C(C99标准)有所区别,后者只保证名称中的前63个字符有意义(在ANSIC中,前63个字符相同的名称被认为是相同的,即使第64个字符不同)。
C++中定义常量有两种方式:
#define 常量名 常量值
const 数据类型 常量名 = 常量值
下面这种代码不太好:
const int a;
a = 10;
如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。
如果以前使用过C语言,您可能觉得前面讨论的#define语句已经足够完成这样的工作了。但const比#define好。首先,它能够明确指定类型。其次,可以使用C++的作用域规则将定义限制在特定的函数或文件中(作用域规则描述了名称在各种模块中的可知程度。第三,可以将const用于更复杂的类型。