1.什么是操作符重载
可以使用分词将操作符重载理解为:操作符+重载。
C++中的操作符很多,如+,-,*,\等等。
C++中的重载也是C++中面向对象多态的体现。
简单说操作符重载:
C++中有:int a=2+3; 那么a=5
操作符重载可以实现对自定义类型的操作:
#include <iostream> using namespace std; class Point{ public: int x; int y; Point(int _x,int _y):x(_x),y(_y){ } Point operator+(Point &p){ int t1=this->x+p.x; int t2=this->y+p.y; Point t(t1,t2); return t; } }; int main() { Point p1(1,3); Point p2(2,6); Point p3 = p1+p2; cout<<"p3:("<<p3.x<<","<<p3.y<<")"; ///执行输出:p3:(3,9) return 0; }
2.操作符重载的方式
操作符重载的实现方式有两种,即通过“友元函数”或者“类成员函数”。如下面代码显示了这两种操作符重载:
class Point{ public: int x; int y; Point(int _x,int _y); Point operator+(Point &p); ///类成员函数,类成员函数可以使用this指针获取自身对象 friend int operator*(Point &p1,Point &p2); ///友元函数 };
可以看出,一个重载“+”,一个重载“*”,都是双目运算符,但是类成员函数只有一个参数。这是因为类成员函数可以使用this指针获取自身的对象,而友元函数则不行。
所以类成员实现操作符重载需要的形式参数比原来少一个,这样使用类成员函数实现一元操作符就不需要参数了。
3.操作符重载例子
#include <iostream> using namespace std; class Point{ public: int x; int y; Point(int _x,int _y):x(_x),y(_y){ } Point operator+(Point &p){ ///实现坐标向量加 int t1=this->x+p.x; int t2=this->y+p.y; Point t(t1,t2); return t; } friend int operator*(Point &p1,Point &p2); ///实现内积 }; int operator*(Point &p1,Point &p2) { return (p1.x*p2.x)+(p1.y*p2.y); } int main() { Point p1(1,3); Point p2(2,6); cout<<p1*p2<<endl; ///输出内积:20 Point p3 = p1+p2; cout<<"p3:("<<p3.x<<","<<p3.y<<")"<<endl; ///输出坐标和:(3,9) return 0; }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, int
, 面向对象
, 重载
, 多态
, 操作符重载
, c++ 操作符重载
, point
, 操作符
, 重载 操作符 c++
, c++重载操作符class
接口分词工具c++
c 操作符重载、c操作符重载专题、c赋值操作符重载、c语言操作符重载、c 结构体重载操作符,以便于您获取更多的相关知识。