一、加号运算符重载.
1、概念:
当你需要特定义的加号运算方法时,就要用到重载,即自定义方法,系统专门将operator+()作为重载专用的名称。定义函数的方法有两种,第一种就是利用成员函数,第二种就是利用全局函数。
2、实例:
#include
using namespace std;
class Person
{
public:
Person ()
{}
Person(int a, int b) :m_A(a), m_B(b)
{}
//第一种,利用成员函数。
Person operator+(Person&p)
{
Person temp;
temp.m_A = this->m_A + p.m_A;
temp.m_B = this->m_B + p.m_B;
return temp;
}
int m_A;
int m_B;
};
//第二种,利用全局函数
Person operator+(Person&p1,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 test06()
{
Person p1(10, 10);
Person p2(10, 10);
Person p3 = p1 + p2;
cout << “p3.m_B:” << p3.m_B << endl << “p3.m_A” << p3.m_A << endl;
}
int main()
{
test06();
system(“pause”);
return 0;
}
注意:
无论是那种个方法,都不用调用operator,可以直接使用加号。Person p3 = p1 + p2;
遇到的Bug:
无法引用 函数 “std::basic_ostream<_CharT, _Traits>::basic_ostream(const std::basic_ostream&) [其中 _CharT=char, _Traits=std::char_traits]” (已隐式声明) – 它是已删除的函数
代码:
#include
using namespace