计算机二级C++考试复习资料只是分享
C++概述(一)发展历史1980 年,Bjarne Stroustrup 博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup 博士并不是从头开始设计新语言,而是在C 语言的基础上进行创建。这就是C++语言。1985 年,C++开始在外面慢慢流行。经过多年的发展,C++已经有了多个版本。为次,ANSI 和ISO 的联合委员会于1989 年着手为C++制定标准。1994 年2 月,该委员会出版了第一份非正式草案,1998 年正式推出了C++的国际标准。(二)C 和C++C++是C 的超集,也可以说C 是C++的子集,因为C 先出现。 关键字和变量C++相对与C 增加了一些关键字,如下:typename bool dynamic_cast mutable namespace static_cast using catch explicit new virtual operator false private template volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool 型变量和wchar_t 型变量:布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。 强制类型转换有时候,根据表达式的需要,某个数据需要被当成另外的数据类型来处理,这时,就需要强制编译器把变量或常数由声明时的类型转换成需要的类型。为此,就要使用强制类型转换说明,格式如下:int* iptr=(int*)&table;表达式的前缀(int*)就是传统C 风格的强制类型转换说明(typecast),又可称为强制转换说明(cast)。强制转换说明告诉编译器把表达式转换成指定的类型。有些情况下强制转换是禁用的,例如不能把一个结构类型转换成其他任何类型。数字类型和数字类型、指针和指针之间可以相互转换。当然,数字类型和指针类型也可以相互转换,但通常认为这样做是不安全而且也是没必要的。强制类型转换可以避免编译器的警告。 标准输入输出流在C 语言中,输入输出是使用语句scanf()和printf()来实现的,而C++中是使用类来实现的。#include iostream.hmain()//C++中main()函数默认为int 型,而C 语言中默认为void 型。{ int a;coutvcin>>a; /*输入一个数值*/coutv return 0;}cin,cout,endl 对象,他们本身并不是C++语言的组成部分。虽然他们已经是ANSI标准C++中被定义,但是他们不是语言的内在组成部分。在C++中不提供内在的输入输出运算符,这与其他语言是不同的。输入和输出是通过C++类来实现的,cin 和cout 是这些类的实例,他们是在C++语言的外部实现。 函数重载在C++中,允许有相同的函数名,不过它们的参数类型不能完全相同,这样这些函数就可以相互区别开来。而这在C 语言中是不允许的。1.参数个数不同#include iostream.hvoid a(i nt, in t);void a(i nt);int mai n(){a(5);a(6,7);return 0;}void a(i nt i){cout< }void a(i nt i,i nt j){cout< }2.参数格式不同#include iostream.hvoid a(i nt, in t);void a(int,float);int main(){a(5,6);a(6,7.0) 变量作用域C++语言中,允许变量定义语句在程序中的任何地方,只要在是使用它之前就可以;而C 语言中,必须要在函数开头部分。 而且C++允许重复定义变量,C 语言也是做不到这一点的。看下面的程序:#include iostream.hint a;int main(){cin>>a;for(int i=1;i<=10;i++)//C 语言中,不允许在这里定义变量{static int a=0;//C 语言中,同一函数块,不允许有同名变量a+=i;cout<<::a<< < }return 0;} new 和delete 运算符在C++语言中,仍然支持malloc()和free()来分配和释放内存,同时增加了new 和delete 来管理内存。1.为固定大小的数组分配内存#include iostream.hint main(){int *birthday=new int[3];birthday[0]=6;birthday[1]=24; birthday[2]=1940;cout< < delete [] birthday; // 注意这儿return 0;}在删除数组时,delete 运算符后要有一对方括号。2.为动态数组分配内存#include iostream.h#include stdlib. 引用型变量在C++中,引用是一个经常使用的概念。引用型变量是其他变量的一个别名,我们可以认为他们只是名字不相同,其他都是相同的。1.引用是一个别名C++中的引用是其他变量的别名。声明一个引用型变量,需要给他一个初始化值,在变量的生存周期内,该值不会改变。& 运算符定义了一个引用型变量:int a;int& b=a;先声明一个名为a 的变量,它还有一个别名b。我们可以认为是一个人,有一个真名,一个外号,以后不管是喊他a 还是b,都是叫他这个人。同样,作为变量,以后对这两个标识符操作都会产生相同的效果。#include iostream.hint main(){int a=123;int& b=a;cout< a++;cout< b++;cout< return 0;}2. 类的设计1.类的声明class 类名{private:// 私有public:// 公有};2.类的成员一般在C++类中,所有定义的变量和函数都是类的成员。如果是变量,我们就叫它数据成员如果是函数,我们就叫它成员函数。3.类成员的可见性private 和public 访问控制符决定了成员的可见性。由一个访问控制符设定的可访问状态将一直持续到下一个访问控制符出现,或者类声明的结束。私有成员仅能被同一个类中的成员函数访问,公有成员既可以被同一类中的成员函数访问,也可以被其他已经实例化的类中函数访问。当然,这也有例外的情况,这是以后要讨论的友元函数。类中默认的数据类型是private,结构中的默认类型是public。 构造函数什么是构造函数?通俗的讲,在类中,函数名和类名相同的函数称为构造函数。上面的Box()函数就是构造函数。C++允许同名函数,也就允许在一个类中有多个构造函数。如果一个都没有,编译器将为该类产生一个默认的构造函数,这个构造函数可能会完成一些工作,也可能什么都不做。绝对不能指定构造函数的类型,即使是void 型都不可以。实际上构造函数默认为void 型。当一个类的对象进入作用域时,系统会为其数据成员