c++ 基础知识-类和对象-运算符重载
1.加法运算符重载
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person();
~Person();
public:
int m_A;
};
Person::Person()
{
m_A = 10;
}
Person::~Person()
{
cout<<" ~Person() 析构函数 "<<endl;
}
Person operator+(const Person &p1,const Person &p2)
{
Person temp;
temp .m_A = p1.m_A + p2.m_A;
return temp;
}
void fun()
{
Person p1;
Person p2;
Person p4 = p2 + p2;
cout<<"p1 m_A : "<<p1.m_A<<endl;
cout<<"p2 m_A : "<<p2.m_A<<endl;
cout<<"p4 m_A : "<<p4.m_A<<endl;
}
int main()
{
fun();
return 0;
}
2.左移运算符
重载左移运算符结合友元可以实现自定义输出
#include <iostream>
#include <string>
using namespace std;
class Person
{
friend ostream & operator<<(ostream &cout, Person &p);
public:
Person();
~Person();
private:
int m_A;
};
Person::Person()
{
m_A = 10;
}
Person::~Person()
{
cout<<" ~Person() 析构函数 "<<endl;
}
ostream & operator<<(ostream &cout, Person &p)
{
cout<<p.m_A;
return cout;
}
void fun()
{
Person p1;
cout<<p1<<endl;
}
int main()
{
fun();
return 0;
}
3.递增运算符
后置递增运算符先调用当前值,之后对当前值进行递增运算
前置递增运算符先进行递增运算,然后返回的是递增之后的值
#include <iostream>
#include <string>
using namespace std;
class Int
{
friend ostream& operator<<(ostream &cout, Int &p);
public:
Int();
~Int();
Int& operator++()
{
m_Int ++;
return *this;
}
Int operator++(int)
{
Int temp = *this;
temp.m_Int ++;
return temp;
}
private:
int m_Int;
};
Int::Int()
{
m_Int = 0;
}
Int::~Int()
{
cout<<"析构函数"<<endl;
}
ostream& operator<<(ostream &cout, Int &p)
{
cout<<p.m_Int;
return cout;
}
void fun1()
{
Int p;
cout<<++p<<endl;
cout<<++p<<endl;
cout<<p<<endl;
}
void fun2()
{
Int p;
cout<<p++<<endl;
cout<<p++<<endl;
cout<<p++<<endl;
}
int main()
{
fun1();
cout<<"-----------------------------------"<<endl;
fun2();
return 0;
}