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); // 函数原型,没有具体代码 |