1. 程式人生 > 其它 >[hdu7062]A Simple Problem

[hdu7062]A Simple Problem

加號運算子過載

如果想讓自定義資料型別 進行+運算,那麼就需要過載 + 運算子

在成員函式 或者 全域性函式裡 重寫一個+運算子的函式

函式名 operator+ () {}

運算子過載 也可以提供多個版本

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

class Person
{
public:
    Person() {};
    Person(int a, int b) :m_A(a), m_B(b)
    {

    }

    //Person operator+(Person& p)        
//成員函式過載加法運算子 二元 //{ // Person tmp; //需要提供預設的建構函式 // tmp.m_A = this->m_A + p.m_A; // tmp.m_B = this->m_B + p.m_B; // return tmp; //} int m_A; int m_B; }; //全域性函式過載+號運算子 二元 Person operator+(Person& p1, Person& p2) { Person tmp; tmp.m_A
= p1.m_A + p2.m_A; tmp.m_B = p1.m_B + p2.m_B; return tmp; } //過載+號運算子多版本 即(過載過載+號運算子) Person operator+(Person& p1, int a) { Person tmp; tmp.m_A = p1.m_A + a; tmp.m_B = p1.m_B + a; return tmp; } void test() { Person p1(10, 10); Person p2(10, 10); Person p3 = p1 + p2; //
p1+p2 從什麼表達是轉變? 成員 p1.operator(p2) 全域性 operator(p1,p2) cout << "p3.m_A:" << p3.m_A << "p3.m_B:" << p3.m_B << endl; Person p4 = p1 + 20; cout << "p4.m_A:" << p4.m_A << "p4.m_B:" << p4.m_B << endl; } int main() { test(); system("Pause"); //阻塞功能 return EXIT_SUCCESS; // 返回正常退出 }

結果: