第一个C++程序
通过前面的讲解,我们知道C++编程语言是C编程语言的一种扩展,那么,我们来编写一个简单的C++程序代码,看看C++语言与C语言有什么区别和联系。在ubuntu系统中,执行如下命令:
此时,使用gedit编辑器打开 test.cpp文件。在打开的 test.cpp文件中,编写C++代码。就如同在.c文件中编写C代码一样。
可以看到,使用 g++ 编译工具,编译test.cpp文件,编译得到目标文件是out程序。然后,执行out程序。
分析一下,上面编写的C++程序和以前见过的C程序有什么不同?
(1) 在C++程序中,一般在主函数main前面加一个类型声明符int,表示main函数的返回值为整型数值。标准C++规定main函数必须声明为int型,有的操作系统,如Unix、Linux要求执行一个程序后必须向操作系统返回一个数值,指定程序是正常退出还是异常退出。所以,C++程序可以这样定义:如果程序正常执行,则向操作系统返回数值0,否则,返回数值-1。
所以,在main函数前面加int,同时在main函数的最后加一条语句“return 0;”即可。即此主函数返回一个int类型的数值。程序中 return 0; 的作用是向操作系统返回0。
(2) 在C++程序中,可以使用C语言中的“/*……..*/” 形式的注释行(多行注释),还可以使用以“//”开头的注释(单行注释)。编译系统将“//”以后到本行末尾的所有字符都作为注释。应注意:它是单行注释,不能跨行。
(3) 在C++程序中,一般用cout 进行输出。cout 是C++用于输出的语句。cout实际上是C++系统定义的对象名,称为:输出流对象。
在本例中,它的作用是将运算符“<<”右侧双撇号内的字符串“www.mylinux.vip c++\n”插入到输出的队列cout中(输出的队列也称作“输出流”),C++系统将输出流cout的内容输出到系统指定的设备(一般为显示器)中,除了可以用cout进行输出外,在C++中还可以用printf函数进行输出。因为C++是C语言的扩展,可以使用C语言定义的API函数。
(4) 使用cout需要用到头文件iostream,程序的第一行“#include <iostream>”是一个预处理命令。文件iostream的内容是提供输出或输入时所需的一些信息。所以,包含该头文件,引用C++语言提供的cout对象。
注意:在C语言中所有的头文件都带后缀 .h (如 stdio.h),而按C++标准要求,由系统提供的头文件不带后缀 .h,用户自己编写的头文件可以有后缀.h。在C++程序中也可以使用C语言编译系统提供的带有后缀 .h 的头文件。如“#include <math.h>”。
(5) 程序中的“using namespace std;”的意思是“使用命名空间 std”。C++标准库中的类和函数是在命名空间std中声明,因此程序中如果需要使用C++标准库中的有关内容(此时需要用 #include 命令行),就需要用“using namespace std;”语句作为声明,表示要用到命名空间std中的内容。
下面举例一个包含类(class)和对象(object)的简单程序,对C++的类和对象编程有一个基础的概念,后续再深入学习类和对象的知识。
包含类的C++程序,程序测试代码如下:
程序运行结果如下:
这是一个包含类的简单C++程序。class 是声明“类”类型时必须使用的关键字,如同C语言声明结构体类型时使用关键字struct 一样。
在class定义的类中,可以定义变量和函数,那么,这些变量和函数,是属于该类的数据,称为:类的成员变量和成员函数。
在C语言中,也可以在struct定义的结构体中定义变量和函数。要想在C语言的结构体struct中使用函数,我们也是通过“函数指针”来实现,在结构体中声明一个函数指针的时候,这个函数并不是一个函数,也只是一个成员变量而已,只是一个函数指针成员,最终,需要给函数指针成员赋值,让函数指针指向一个具体的函数。
而在C++的类中可以包含两种成员,即数据(如变量 name, age)和函数(如 set_data函数和print函数),分别称为:成员变量和成员函数。
在C++中把一组数据和有权调用这些数据的函数封装在一起,组成一种称为“类 class”的数据结构。如在上面的程序中,成员变量name, age和成员函数set_data, print组成了一个名为 student 的“类”类型。成员函数是用来对成员变量进行操作的。也就是说,一个类由一批数据以及对其操作的函数组成的。
类可以体现数据的封装性和信息隐藏。在上面的程序中,在声明student类时,把类中的数据和函数分为两大类:private(私有)和public(公有)。大多数情况下会把所有成员变量指定为私有,以实现信息隐藏。