C++学习之路(1)— 第一个HelloWorld程序
一、前言
C++在C语言的基础上添加了对面向对象编程和泛型编程的支持,在 20世纪90年代便是最重要的编程语言之一,并在21世纪仍保持强劲势头。C++继承了C语言高效、简洁、快速和可移植性的传统。
C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。C++的模板特性提供了另一种全新的编程方法------泛型编程。这三件法宝既是福也是祸,一方面让C++语言功能强大,另一方面则意味着有更多的东西需要学习。
二、代码编写
新建hello.c
文件,编写代码如下所示:
#include <iostream>
int main()
{
using namespace std;
cout << "Hello World.";
cout << endl;
return 0;
}
三、编译运行
在Linux系统上,使用g++工具对C++代码进行编译,可以通过g++ --version
命令查看g++工具是否可用:
编译命令如下:
g++ hello.c -o hello
然后执行 ./hello
即可运行:
四、头文件包含
代码中第一行:
#include <iostream>
表示包含一个iostream头文件,即将iostream文件的内容添加的程序中;
在C语言中常用的头文件包含语句如下所示:
#include <stdio.h>
可以看到,其显式的指出了头文件的后缀名.h
,但一般的,在C++的新式风格中,文件包含是不加后缀名的。
五、名称空间
我们看如下语句:
using namespace std;
其用到了名称空间的概念:
名称空间支持是一项C++特性,旨在让您编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序。一个潜在的问题是,可能使用两个已封装好的产品,而它们都包含一个名为 wanda()的函数。这样,使用 wanda()函数时,编译器将不知道指的是哪个版本。名称空间让厂商能够将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出想使用哪个厂商的产品。
例如:Microflop Industries可以将其定义的 wanda()函数放到一个名为 Microflop的名称空间中,这样,其 wanda( )函数的
全称为 Microflop::wanda();同样,Piscine 公司的 wanda()版本可以表示为 Piscine::wanda()。这样,程序就可以使用名称空间来区分不同的版本了:
Microflop::wanda("go dancing?"); //use Microflop namespace version
Piscine::wanda("a fish named Desire"); //use Piscine namespace version
按照这种方式,类、函数和变量便是C++编译器的标准组件,它们现在都被放置在名称空间 std 中。
仅当头文件没有扩展名h时,情况才是如此。这意味着在iostream 中定义的用于输出的 cout 变量实际上是
std:cout,而 endl实际上是 std::endl。因此,我们还可以以下述方式进行编码:
#include <iostream>
int main()
{
std::cout << "Hello World. std::cout.";
std::cout << std::endl;
return 0;
}
编译运行如下所示:
六、using编译指令
using namespace std;
这个 using 编译指令使得std 名称空间中的所有名称都可用。这是一种偷懒的做法,在大型项目中会有潜在的问题。更好的方法是,只使所需的名称可用,这可以通过使用using声明来实现:
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
int main()
{
cout << "Hello World.";
cout << endl;
return 0;
}
用这些编译指令替换后,便可以使用 cin 和 cout,而不必加上 std::前缀.