C++加法运算符的重载(operator)
2023-12-22 15:47:03
1.重载加法运算符
为什么要重载加法运算符?
因为C++提供的加法运算符只能满足基本数据类型间的加法,如果我想让俩个相同的类的对象进行加法的话会报错
所以为了能让俩个相同类的对象进行加法,我们要把这个过程封装到一个函数里面,只不过要多加一个关键字operator而已,让编译器一下子就找到,这个是重载运算符的函数
作用:实现俩个自定义运算符相加
成员函数实现运算符重载
#include <iostream> ? using namespace std; ? class Box { int length; int width; int height; public: Box() { length = 0; width = 0; height = 0; } Box(int length,int width,int height) { this->length = length; this->width = width; this->height = height; } Box(const Box& other) { length = other.length; width = other.width; height = other.height; } //成员函数重载加法运算符 Box operator+(const Box& other) { Box p; p.length = this->length + other.length; p.width = this->width + other.width; p.height = this->height + other.height; return p; } }; int main() { Box a(1,2,3); Box b(2, 3, 4); Box c = a + b;//直接调用 Box d; d = a.operator+(b);//调用重载运算符的函数 return 0; }
全局函数实现运算符的重载
#include <iostream> ? using namespace std; ? class Box { int length; int width; int height; friend Box operator+(const Box& other1, const Box& other2); friend Box operator+(const Box& other1, int val); public: Box() { length = 0; width = 0; height = 0; } Box(int length,int width,int height) { this->length = length; this->width = width; this->height = height; } Box(const Box& other) { length = other.length; width = other.width; height = other.height; } }; //全局函数重载加法运算符 Box operator+(const Box& other1,const Box& other2) {//不调用成员函数是无法访问私有的成员变量的,需要设置为友元,告诉编译器,我这个重载运算符的函数是你这个类的好朋友,都哥们,能f Box p; p.length = other1.length + other2.length; p.width = other1.width + other2.width; p.height = other1.height + other2.height; return p; } Box operator+(const Box& other1,int val) { Box p; p.length = other1.length + val; p.width = other1.width + val; p.height = other1.height + val; return p; } int main() { Box a(1,2,3); Box b(2, 3, 4); Box c = a + b; Box d; d=operator+(a,b); return 0; }
文章来源:https://blog.csdn.net/m0_75178021/article/details/135152211
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!