今天知识点主要关于运算符的重载。在讲课的过程中用到了之前的this指针问题和引用知识点,这两个点我都是没有掌握熟练,因此下午的一个小时时间我重新温习了这两个知识点。
其中的一个知识点:使用引用返回,返回数据成员本身。例子:float &aa(){return(a);}返回a。
运算符重载知识点:
1 运算符重载格式:类型名operator运算符(形参表){函数体}operator运算符是函数名字
以+运算符为例分析知识点:{在class aa类里面写出aa operator +(aa & a,aa& b){aa c;
c.aaa()=a.aaa()+b.aaa(); c.bbb()=a.bbb()+b.bbb(); return(c);}重载函数。在主函数里写出调用
aa c=a+b;或者aa c=operator +(a,b); “aa c=a+b;”求职转化了函数的调用,就像调用operator +函数,以a和b作为实参。}
为方便访问,会使用友元形式重载。friend aa operator +(aa&,aa&);Int或者aa operator +(aa & a,int&b);
2 要注意的一点是运运算符重载时参数个数不可以超过原来数目,运算符重载时参数个数不可以超过原来数目。就是不能都是int这种c++提供的内部类型。
对于运算符的一些限制:
只能是成员的运算符:(系统为类提供的)=、()、[ ]、-〉
只能是友元的运算符:(cout是其它类的对象)cout<<、cin>>
既可以友元也可以成员的:(定义者提供)+、-等。
3 赋值运算符重载:
拷贝构造函数和赋值操作符都是用来拷贝一个类的对象给另一个同类型的对象void fn(A a){ A na=a; 拷贝构造函数:将一个对象拷贝到另一个新对象A b;b=a;}赋值运算符:将一个对象为另一个已经存在的对象赋值
4 类型转换运算符声明的形式:operator 类型名();没有参数,没有返回类型,(其返回类型由函数名字指定)但是函数体中必须包含return语句