写点什么

C++ 运算符重载之加号运算符重载

作者:CtrlX
  • 2022 年 8 月 09 日
    山东
  • 本文字数:1057 字

    阅读完需:约 3 分钟

C++运算符重载之加号运算符重载


加号运算符重载

作用:实现两个自定义数据类型相加的运算


1.成员函数实现 + 号运算符重载


class Person {public:  Person() {};  Person(int a, int b)  {    this->m_A = a;    this->m_B = b;  }      //1.成员函数实现 + 号运算符重载  Person operator+(const Person& p) {    Person temp;    temp.m_A = this->m_A + p.m_A;    temp.m_B = this->m_B + p.m_B;    return temp;  }
public: int m_A; int m_B;};

void test() {
Person p1(10, 10); Person p2(20, 20);
//1.成员函数方式 Person p3 = p2 + p1; //相当于 p2.operaor+(p1) cout << "mA:" << p3.m_A << " mB:" << p3.m_B << endl; }
int main() {
test();
system("pause");
return 0;}
复制代码


2.全局函数实现 + 号运算符重载


class Person {public:  Person() {};  Person(int a, int b)  {    this->m_A = a;    this->m_B = b;  }    public:  int m_A;  int m_B;}; //2.全局函数实现 + 号运算符重载Person operator+(const Person& p1, const Person& p2) {  Person temp;  temp.m_A = p1.m_A + p2.m_A;  temp.m_B = p1.m_B + p2.m_B;  return temp;}

void test() {
Person p1(10, 10); Person p2(20, 20);
//2.全局函数方式 Person p3 = p2 + p1; //相当于 operaor+(p1,p2) cout << "mA:" << p3.m_A << " mB:" << p3.m_B << endl;

}
int main() {
test();
system("pause");
return 0;}
复制代码


3.运算符重载 可以发生函数重载


class Person {public:  Person() {};  Person(int a, int b)  {    this->m_A = a;    this->m_B = b;  }    
public: int m_A; int m_B;};

//3.运算符重载 可以发生函数重载 Person operator+(const Person& p2, int val) //注意全局函数的运算重载的函数名是编译器给的。{ Person temp; temp.m_A = p2.m_A + val; temp.m_B = p2.m_B + val; return temp;}
void test() {
Person p1(10, 10); Person p2(20, 20);
//3.运算符重载也可以发生函数重载,如下person + int Person p4 = p3 + 10; //相当于 operator+(p3,10) cout << "mA:" << p4.m_A << " mB:" << p4.m_B << endl;
}
int main() {
test();
system("pause");
return 0;}
复制代码


总结 1:对于内置的数据类型的表达式的的运算符是不可能改变的,即 1+1=2 不可变,不会为 3.


总结 2:不要滥用运算符重载,即你写的函数名是加法,可是函数的实现是减法,可以运行但是这叫滥用。

用户头像

CtrlX

关注

Pain is inevitable,suffering is optional 2022.08.01 加入

【个人网站】ctrlx.life 【联系方式】微信:gitctrlx 【软件技能】前端,C++,Python,研究网络工程,数据结构与算法。

评论

发布
暂无评论
C++运算符重载之加号运算符重载_c_CtrlX_InfoQ写作社区