CPP-01-HelloWorld

最近由于部门调整,需要改变编码语言,这里重新学习一下《C++ Primer Plus》,建立了一个 Demo 方便自己编译代码 https://github.com/XBoom/CPP-Learn.git

来看第一个 C++ Demo

1
2
3
4
5
6
7
8
9
10
#include<iostream>

int main()
{
using namespace std;
cout << "Come up and C++ me some time.";
cout << endl;
cout << "You won't regret it!";
return 0;
}

头文件

#include 编译指令让预处理器将 iostream 文件的内容添加到程序中,取代程序中的代码行 #include <iostream>。原始文件没有被修改,只是将源代码文件和iostream组合成一个复合文件。在编译后使用

头文件类型 约定 示例 说明
C++ 旧式风格 以.h结尾 iostream.h c++程序可以使用
C 旧式风格 以.h结尾 math.h c、c++程序可以使用
C++ 新式风格 没有拓展名 iostream C++ 程序可以使用,使用 namespace std
转换后的 C 加上前缀c,没有扩展名 cmath C++ 程序可以使用,可以使用不是C的特 性,如namespace std

命名空间

如果使用iostream,而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用,叫做 using编译指令

1
using namespace std;

名称空间支持是一项C++特性,旨在让编写大型程序包含多个项目现有的代码组合起来的程序时更容易

但是如果多个项目包含相同的函数,那么就可以通过指定命名空间调用。

按照这种方式,类、函数和变量便是C++编译器的标准组件,它们都被放置在名称空间std中。仅当头文件没有扩展名h时,情况才是如此。在iostream中定义的用于输出的cout变量实际上是 std::cout,而endl实际上是std::endl。因此,可以省略编译指令using编码

1
2
3
std::cout << "Come up and C++ me some time.";
std::cout << endl;
std::cout << "You won't regret it!";

而让程序能够访问命名空间的方法有很多中

  • using namespace std;放在函数定义之前,文件中所有的函数都能够使用名称空间std中所有的元素
  • using namespace std;放在特定函数定义中,该函数能够使命名约定用名称空间std中的所有元素
  • 在特定的函数中使用类似 using std::cout;这样的编译指令,而不是 using namespace std;,让该函数能够使用指定的元素,如cout
  • 完全不使用编译指令using,而在需要使用名称空间std中的元素 时,使用前缀std::,如下所示:

cout && cin

1
cout << "Come up and C++ me some time.";

<< 符号表示该语句将把这个字符串发送给 cout;该符号指出了信息流动的路径,是一个预定义的对象,知道如何显示字符串、数字和单个字符

插入运算符 << 看上去就像按位左移运算符 << ,这是一个运算符重载的例子,通过重载,同一个运算符将有不同的含义

1
2
int num;
cin >> num;

输入时,cin 使用 >> 运算符从输入流中抽取字符

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;

int main() {
char ch;
char cm = 'M';
char cn = 77;
cout << "Enteer a character: " << endl;
cin >> ch;
cout.put('!');
cout.put('.');
cout << " ch " << ch << " cm " << cm <<" cn " << cn << endl;
}

上面的输出结果

1
2
3
Enteer a character: 
M
!. ch M cm M cn M

其中 cout.put(char c)的作用是存放一个 char 变量

函数原型

函数原型之于函数就像变量声明之于变量 — 指出涉及的类型

1
double sqrt(double);	//function prototype

对于C库中 的每个函数,都在一个或多个头文件中提供了其原型,C 和 C 将库函数的这两项特性 (原型和定义)分开了。库文件中包含了函数的编译代码,而头文件中则包含了原型

参考链接

  1. 《C++ Primer Plus》