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++

评论

Your browser is out-of-date!

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

×