首页 > 代码库 > C++重载学习笔记

C++重载学习笔记

在学习这部分的时候有的地方不懂,有些是摘自网页资料。

1、重载运算符有两种形式,即重载为类的成员函数和重载为类的友元函数。

2、成员函数可以只用一个参数,友元类要有两个参数,把所有操作数通过参数全部传递。

3、++i,--i,前增量是引用返回,没有参数是前置运算。后增量是值返回,后置参数中参数只是一个标识。

4、如果定义了一个对象Cuser user=(2)编译可以通过,那么为了构造函数的自动转换功能,可以在构造函数前使用explicit关键字。explicit只能出现在类内的构造函数声明处,只适合有一个参数的。那么在使用了explicit关键字后Cuser user=2则编译不能通过,应该使用标准的Cuser user(2);来为对象赋值。

5、当重载函数为成员函数时,双目运算符部分的参数可以只写一个,友元类则必须把全部的参数都写出来才能进行传递。

运算符重载函数有两个参数,由于重载函数是complex类中的成员函数,有一个参数是隐含的,运算符函数是用this指针隐式地访问对象的成员。一个是this指针指向的对象中的成员,一个是形参中对象的成员。this->real+c2.real,this->real就是c1.real.在将运算符函数重载为成员函数后,c1+c2编译系统把它解释为c1.operator+(c2).即通过对象c1调用运算符重载函数,并以表达式中第二个参数(运算符右侧的类对象c2)作为函数实参。

6、隐式指针,类产生的对象都会有那么一个指向对象本身的一个指针this,例如说complex ts,在ts对象创建的时候,会产生一个complex *this=&ts,这个指针并不占对象的内存,并不是用户自定义的,不占对象内存,但是属于对象的一部分,能够访问对象的数据和函数成员。一般在类内使用函数成员或数据成员都会隐式的用上this.编译器会自己做。

7、如果类中有一个数据成员为int num,一个成员函数为 int  add (int num)那么,编译器就不知道是哪个num传递过来,这时就需要显示的定义this指针,函数体{this->num+num;},第一个表示类中的成员数据,第二个是传过来的参数。

C++重载学习笔记