C++的初步知识

C++的初步知识

之前曾经入门过 C++,但是后来又放弃了。这次就再入门一次吧,希望不要再次放弃。为了日后的读研大业,我选择了谭浩强的《C++程序设计》作为自学教材。

从 C 到 C++

  • C 语言是结构化和模块化的语言,它是基于过程的。
  • C++是既可以用于基于过程的结构化程序设计,又可以用于面向对象的程序设计,是一个功能强大的混合型的程序设计语言。
  • C++对 C 的增强表现在两个方面:
    • 在原来基于过程的机制基础上,对 C 语言做了不少扩充。
    • 增加了面向对象的机制。

最简单的 C++程序

【例 1.1】字符串输出。

1
2
3
4
5
6
#include <iostream>
using namespace std;
int main(){
cout << "This is a C++ program.";
return 0;
}

程序的第三行用 main 代表主函数的名字。每一个 C++程序都必须有一个 main 函数。main 函数前面的 int 的作用是声明函数的类型为整型(标准的 C++规定 main 函数必须声明为 int 型,即此函数返回一个整型的函数值)。程序的第 6 行的作用是向操作系统返回一个零值。如果程序不能正常执行,则会自动向操作系统返回一个非 0 值,一般为-1。

cout 实际上是 C++系统定义的对象名,称为 输出流对象<<插入运算符

程序第一行的#include <iostream>并不是 C++语句,而是 C++的一个预处理指令,它以#开头以与 C++语句相区别,行尾没有分号。

#include<iostream>是一个包含指令,它的作用是将文件 iostream 的内容包含到该命令所在的文件中,代替该指令。文件 iostream 的作用是向程序提供输入输出时所需的一些信息。由于这类文件都放在程序单元的开头,所以称为头文件。在程序进行编译时,现对所有的预处理命令进行处理,将头文件的具体内容代替#include 指令,然后再对该程序单元进行整体编译。

程序的第二行using namespace std;表示使用命名空间 std。C++标准库中的类和函数是在命名空间 std 中声明的,因此程序中如果需要用到 C++标准库,就需要使用该语句作声明,表示要用到命名空间中的内容。

【例 1.2】求 a,b 两个数的和。

1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main(){
int a, b, sum;
cin >> a >> b;
sum = a + b;
cout << "a + b = " << sum << endl;
return 0;
}

endl;表示本行结束,因此在输出变量 sum 之后换行了。

【例 1.3】求两个数的最大值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int max(int x, int y){
int z;
if (x > y) z = x;
else z = y;
return z;
}

int main(){
int a, b, m;
cin >> a >> b;
m = max(a, b);
cout << "max = " << m << '\n';
return 0;

}

在上面的程序中,max 函数出现在 main 函数之前,所以在 main 函数调用 max 函数的时候,编译系统能识别 max 是已定义的函数名。如果把两个函数调换一下,这时就会无法编译,按出错处理。

为了解决这个问题,在主函数中需要对被调用函数作出声明。对上面的程序进行改写。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main(){
int max(int x, int y);
int a, b, c;
cin >> a >> b;
c = max(a, b);
cout << "max = " << c << endl;
return 0;
}
int max(int x, int y) {
int z;
if (x > y) z = x;
else z = y;
return(z);
}

也就是要在主函数对要使用对函数进行声明。

【例 1.4】包含类的 C++程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;

class Student{
private:
int num;
int score;
public:
void setdata(){
cin >> num;
cin >> score;
}
void display(){
cout << "num = " << num << endl;
cout << "score = " << score << endl;
};
};
Student stud1, stud2;
int main(){
stud1.setdata();
stud2.setdata();
stud1.display();
stud2.display();
return 0;
}

运行结果:

1
2
3
4
5
6
1001 98
1002 100
num = 1001
score = 98
num = 1002
score = 100

上面的程序把数据指定为私有的,函数指定为公有的。这样可以实现信息的隐蔽。信息隐蔽是 C++的一大特点。

以上几个 C++程序是按照 ANSI C++规定的语法编写的。由于 C++是按照 C 语言发展而来的,为了与 C 兼容,C++保留了 C 语言中的一些规定。其中之一就是头文件的形式。在 C 语言中,头文件中用.h作为后缀,如 studio.h,math.h,string.h 等。在 C++发展的初期,为了和 C 语言兼容,许多 C++编译系统保留头文件以.h为后缀的用法,如iostream.h。但后来 ANSI C++不建议这么做,近年推出的 C++编译系统新版本采用了 C++的新方法,提供了一些不带后缀的头文件,如用 iostream,string,cmath 等作为头文件。但是为了使原来编写的 C++程序能够运行,仍允许使用原有的带后缀.h的头文件。例 1.1 也可以写成下面的形式:

1
2
3
4
5
#include <iostream.h>
int main(){
cout << "This is a C++ program.";
return 0;
}

由于 C++ 无命名空间,因此用带后缀的.h的头文件时不必用 using namespace std;作声明。

# C++

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×