本章内容包括:
- 如何创建C++程序
- C++程序的一般格式
- #include编译指令
- main()函数
- 如何使用cout对象进行输出
- 如何在C++程序中加入注释
- 何时以及如何使用endl
- 如何声明和使用变量
- 如何使用cin对象进行输入
- 如何定义和使用简单函数
2 进入C++
2.1 main()函数
- 函数定义:函数头+函数体、
2.1.1 作为接口的函数头
- 函数头描述了函数与调用它的函数之间的接口
- 函数头:
返回类型:从本函数返回给调用它的函数的信息
形参列表(参数列表):从调用函数传递给被调用函数的信息 - 启动代码:main函数被启用代码调用,启动代码是由编译器添加到程序中的,是程序和操作系统之间的桥梁
- C++不支持省略返回类型默认int
- 只有main函数可以省略返回语句return 0
- C++程序必须有一个main函数(例外:动态链接库(DLL)模块)
2.1.2 C++注释
2.1.3 C++预处理器和iostream文件
- 程序要使用C++输入或输出工具,需要提供
#include<iostream>//预处理器将iostream文件的内容添加到程序中
using namespace std;
- 预处理器在进行主编译之前对源文件进行处理:在源代码被编译之前,替换或添加文本
- iostream:io->输入、输出
2.1.4 头文件名
- 包含文件:头文件
- 没有.h的头文件也可以包含名称空间
2.1.5 名称空间
- using编译指令:如果使用iostream而不是iostream.h,则应使用using编译指令来使iostream中的定义对程序可用
- 名称空间支持:可能使用两个已封装好的产品,而它们都包含同一个wanda()函数。这样,使用wanda()函数时,编译器不知道指的是哪个版本。名称空间让厂商能够将产品封装在一个叫做名称空间的单元中。
- 类、函数和变量是C++编译器的标准组 件,它们被放在名称空间std中。
2.1.6 使用cout进行C++输出
- 在C++中,用括号括起的一系列字符叫做字符串,因为它是由若干字符组合而成的
- <<符号表示该语句把这个字符串发送给cout,该符号指出了信息流动的路径。
- cout是一个预定义对象,知道如何显示字符串、数字和单个字符;对象是类的特定实例,类定义了数据的存储和使用方式。
- 只需要知道对象的接口,就可以使用对象。
- 从概念上看,输出是一个流,即从程序流出的一系列字符。cout对象表示这种流,其属性是在iostream文件中定义的。
- cout的对象属性包括一个插入操作符,它可以将其右侧的信息插入到流中。
- C++扩展了操作符重载的概念,允许为用户定义的类型(类)重新定义操作符的含义。
2.1.6.1 控制符endl
- endl表示重起一行。在输出流中插入endl将导致屏幕光标移到下一行的开头。
- 诸如endl等对于cout来说有特殊函数的特殊符号被称为控制符。和cout一样,cout也是在头文件iostream中定义的,且位于名称空间std中。
2.1.6.2 换行符
- 在字符串中包含换行符\n
- 显示用引号括起的字符串时,通常用换行符\n,其他情况使用endl
2.1.7 C++源代码的格式化
- C++中,可以在能够使用回车的地方使用空格,反之亦然。
- 不能把空格、制表符或回车放在元素中间,也不能把回车放在字符串中间。
2.1.7.1 标记和空白
- 一行代码不可分割的元素叫做标记;空格、制表符和回车统称为空白
2.1.7.2 C++源代码风格
- 每行一条语句
- 每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行
- 函数中的语句都相对于花括号进行缩进
- 与函数名称相关的圆括号周围没有空白
2.2 C++语句
2.2.1 声明语句和变量
- 使用声明语句来指出存储类型并提供位置标签
- 编译器负责分配和标记内存的细节
- 所有变量必须声明
- 声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称
- 定义:编译器为变量分配内存空间;引用声明。
- C++的做法通常是在首次使用变量前声明它。
2.2.2 赋值语句
- C++可以连续使用赋值语句;赋值从右向左进行。
2.2.3 cout的新花样
- cout可用于数字和字符串。
- 字符串存储的是书写该数字时使用的字符;但整数25被存储为数值,将25存储为二进制数。
- cout的智能行为源自C++的面向对象特性。C++插入操作符将根据其后的数据类型相应地调整其行为,这是一个运算符重载的例子。
2.3 其他C++语句
- cin:与cout对应的用于输入的对象
2.3.1 使用cin
- 输入是流入程序的字符流,iostream将cin定义为一个表示这种流的对象。输入时,cin使用>>操作符从输入流中抽取字符。
- cin可以将通过键盘输入的一系列的字符转换为接受信息的变量能够接受的形式。
2.3.2 使用cout进行拼接
- cout可以将字符串和整数输出合并为一条语句。
- 可以将一条语句放在4行上输出。
2.3.3 类简介
- 类是C++中面向对象编程的核心概念之一。
- 类是用户定义的一种数据类型。
- 类定义描述的是数据格式及其用法;对象是根据数据格式规范创建的实体。
- ostream和istream的类定义位于iostream文件中,没有被内置到编译器中。
- iostream系列类和相关的fstream系列类是早期所有的实现都自带的唯一两组类定义
- C++存在大量支持UNIX、Macintosh和Windows编程的类库
- 类描述制定了可对类对象执行的所有操作。
- C++提供了两种发送消息的方式:使用类方法(函数调用)和重新定义操作符。
2.4 函数
2.4.1 使用有返回值的函数
- C++提供函数的参数类型和返回值类型的方式是使用函数原型语句。
- C++程序应当为程序中使用的每个函数提供原型
double sqrt(double);//sqrt函数的原型
- 原型结尾的分号表明它是一条语句,时的它是一个原型,而不是函数头。
- 使用sqrt()时,必须提供原型,可以用两种方法实现:在源代码文件中输入函数原型;包含头文件cmath。
- 原型只描述函数接口,它描述的是发送给函数的信息和返回的信息;而函数定义中包含了函数的代码。库文件包含了函数的编译代码,头文件中包含了原型。
2.4.2 函数变体
- 函数有多个、一个或无返回值
2.4.3 用户定义的函数
2.4.3.1 函数格式
1.C++不允许将函数定义嵌套在另一个函数定义中
2.4.3.2 函数头
1.可以将计算机的操作系统看作main函数的调用程序,因此main函数的返回值被返回给操作系统。(UNIX外壳脚本和DOS批处理文件都被设计成运行程序,并测试它们的返回值)
2.4.4 用户定义的有返回值的函数
//convert.cpp--converts stone to pounds
#include<iostream>
int stonetolb(int);//function prototype
int main()
{
using namespace std;
int stone;
cout<<"Enter the weightin stone:";
cin>>stone;
int pounds=stonetolb(stone);
cout<<stone<<"stone=";
cout<<pounds<<"pounds."<<endl;
return 0;
}
int stonetolb(int sts)
{
return 14*sts;
}
- 函数原型描述了函数接口
2.4.5 在多函数程序中使用using编译指令
- 将using std namespace;放在函数定义之前,让文件所有的函数都能够使用名称空间std中所有的元素。
- 将using std namespace;放在特定的函数定义中
- 在特定的函数中使用类似using std::cout;这样的编译指令而不是using std namespace;,让该函数能够使用指定的元素
- 完全不使用编译指令using,在需要名称空间std中的元素时,使用前缀std::,例如:
std::cout<<I'm using cout and endl from the std namespace"<<std::endl;
总结
- 语句:声明语句;赋值语句;消息语句;函数调用;函数原型;返回语句
- cin和cout是istream和ostream类的实例,这两个类是在iostream文件中定义的