又一次参加了等级考试,不得不说自己的脸皮真的很厚,但是反复的考试、反复的学习也让自己对C++这门语言有了更深的认识。回顾一下比较重要的一些知识点大概如下所示:
重载
重载包括函数重载和运算符的重载。函数重载指一个函数名对应对各函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回类型不同而参数类型和个数相同的重载,简言之就是参数的类型和个数有所不同的函数才可以称得上是重载。运算符的重载有以下规则需要注意:
1.不允许用户自定义新的运算符,只能对已有的运算符进行重载
2.“.”、“.*”、“::”、“?:”、“->”五个运算符不能重载;
3.重载不能改变运算符的优先级和结合性性、不能改变用算符的个数、不能有默认的参数;
4.一般情况下,单目运算符最好重载为成员函数、双目运算符最好重载为友元函数,但需要注意的是双目运算符=、()、[ ]、-- >不能重载为友元函数; 类型转换函数只能定义为类的成员函数,不能定义为类的友元函数;如果运算符中的操作数存在隐式类型转换,则只能重载为友元函数;
5.当运算符函数是类的成员函数是,最左边的操作数必须是运算符类的一个类对象(或者是该类对象的应用,用&表示);如果是友元函数,这最左边的操作数必须是该友元函数所在类的对象;
构造函数和析构函数
构造、析构函数可以说是C++中的重中之重,它是区别于其他语言的一个标志。当实例化一个对象的时候会通过构造函数来为这个对象分配空间,而在这个对象被使用完毕的时候会通过析构函数来释放相应的空间。关于构造函数和析构函数的具体分析自己也在之前的博客《C++构造函数和析构函数》做了比较详细的介绍。构造函数中有一个特例拷贝构造函数,它与构造函数的唯一区别就是它的形参是本类的对象的引用,示例
<span style="font-family:KaiTi_GB2312;font-size:18px;"> Class clock{ Private: Int H,M,S; Public: Clock(int h,int m,int s):H(h),M(m),S(s){} //构造函数 Clock(clock &p){ //拷贝构造函数 H=p.H; M=p.M; S=p.S; } <span style="white-space:pre"> </span>}</span>
构造函数中比较重要的就是初始化的部分,分为参数列表初始化和函数体内部初始化,上例中“构造函数”部分就是参数列表初始化的形式,而“拷贝构造函数”部分是在函数体内完成了初始化,他们都实现了对私有变量的初始化,但需要注意的是const成员变量和引用类型的变量应该用列表初始化的形式。当然由于构造函数也可以重载,所以具体调用构造函数是会根据不同的条件去调用不同的构造函数。
这里想简单介绍一下const和static这两个关键字,const修饰的有常对象和常成员,常对象不能被赋值,必须有构造函数初始化,而常数据成员也必须由构造函数初始化(又回到了上边所说的注意事项了);static这个关键字修饰的静态数据成员是属于一个类的,可以被类直接使用,不会因为实例化对象而发生改变。这一部分的总结不是很全面,还请大家多多指教。
零碎知识点
对于成员函数的引用有两种方式:类直接引用,需要用作用域符号“::”;对象引用,需要用“.”来引用;同样也可以通过this指针来引用;
void 定义的函数没有返回值,形式上就是没有return语句;
算法
算法一直是各种语言中不可或缺的知识,C++中也会考到很多经典的算法,这里就不一一介绍了。
真的是对知识对一次研究就会多一些理解,一次次的备考让自己对C++的理解一步步地加深,同时也将会为自己软考做好充分的准备,对于此次的考试也只能当做一次享受了。