C++学习之二、C++程序基本结构概述
C++ 程序的基本结构是什么样的呢?
示例1:
1 | // Simpmul.cpp ------ 文件名存储后缀为 .cpp |
C++ 注释
C++ 注释以 // 打头,到行尾结束,也可以位于单独的一行上。
C++ 也支持 C 风格的注释,C 注释包括在符号 /* 和 */ 之间,如:/* 简易乘法表 */。
C++ 预处理和 iostream 文件
C++ 提供了两个用于处理输入和输出的预定义对象( cin 和 cout ),它们是 istream 和 ostream 类的实例,这两个类是在 iostream 文件中定义的。
像 iostream 这样的文件叫做包含文件( include file ),也叫头文件( header file ),C 语言的传统是头文件使用扩展名 h,但 C++ 用法不同。现在,对老式 C 的头文件保留了扩展名 h ( C++ 程序仍然可以使用这种文件),而 C++ 头文件则没有扩展名。有些 C 头文件被转换为 C++ 头文件,这些文件被重新命名,去掉了扩展名 h (使之成为 C++ 风格的名称),并在文件名称前面加上前缀 c (表明来自 C 语言)。例如,C++ 版本的 math.h 为 cmath。有时头文件的 C 版本和 C++ 版本相同,而有时候新的版本做了一些修改。对于纯粹的 C++ 头文件(如 iostream)来说,去掉 h 不只是形式上的变化,没有 h 的头文件也可以包含名称空间。下表对头文件的命名约定进行了总结。
| 头文件类型 | 约定 | 示例 | 说明 |
|---|---|---|---|
| C++ 旧式风格 | 以 .h 结尾 | iostream.h | C++ 程序可以使用 |
| C 旧式风格 | 以 .h 结尾 | math.h | C、C++ 程序都可以使用,因为 C++ 兼容 C |
| C++ 新式风格 | 没有扩展名 | iostream | C++ 程序可以使用,可以使用名称空间特性 namespace xxx |
| 转换后的 C | 加上前缀 c,没有扩展名 | cmath | C++ 程序可以使用,可以使用不是 C 的特性,如 namespace xxx |
名称空间 namespace
名称空间支持是一项 C++ 特性,名称空间提供了一种在大项目中避免名字冲突的方法。
在名称空间块内声明的符号被放入一个具名的作用域中,避免这些符号被误认为其他作用域中的同名符号。
多个名称空间块的名字可以相同。这些块中的所有声明在该具名作用域声明。
使用 using namespace xxx
如使用 using namespace std 编译指令包含该名称空间,后续使用该域中的对象或方法可以直接使用,如 cout,cin,endl 等。
使用 using xxx::xx
使用 using 指令只包含名称空间中的特定对象或方法,后续可以直接使用这些对象或方法,其它需要引用域对象。
如使用 using std::cout ,后面可以直接使用 cout,但是没有使用该指令的,如 endl,就需要引用域对象 std::endl。
不使用 using 编译指令
不使用任何 using 指令,在需要使用域对象或方法时,需要引用名称空间。
如 std::cout, std::cin, std::endl
C++ 函数原型与函数定义
- 函数原型:用于描述函数接口,描述函数的参数及返回值信息,头文件中的内容就是函数原型,没有具体的函数代码。
- 函数定义:具体的函数实现代码,一般包含于库文件中。
Tips: C++ 程序应当为程序中使用的每个函数提供原型。
函数原型之于函数就像变量声明之于变量——指出涉及的类型。
1 | double sqrt(double); // 函数原型,没有具体代码 |