#include<iostream>
using namespace std;
#include<string>
//class Person {
//public:
// int m_A;
// int m_B;
//
//
//
//public :
// Person() {};
// Person(int a, int b)
// {
// this->m_A = a;
// this->m_B = b;
//
//
//
// }
// 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;
//
// }
//
//
//};
//
//Person operator+(const Person& p2, int val)
//{
// Person temp;
// temp.m_A = p2.m_A + val;
// temp.m_B = p2.m_A + val;
// return temp;
//
//}
//class Person {
// friend ostream& operator<<(ostream& out, Person& p);
//private:
// int m_A;
// int m_B;
//public:
// Person(int a, int b)
// {
// this->m_A = a;
// this->m_B = b;
//
// }
//
//
//};
//
//
//ostream& operator<<(ostream& out, Person& p)
//{
// cout << "a:" << p.m_A << "b:" << p.m_B;
// return out;
//
//}
//class MyInterger {
// friend ostream& operator<<(ostream& out, MyInterger);
//private:
// int m_Num;
//
//
//public :
// MyInterger()
// {
// m_Num = 0;
//
// }
// //前置++
// MyInterger& operator++()
// {
//
// m_Num++;
// return*this;
//
//
// }
// //后置++
// MyInterger operator++(int)
// {
//
// MyInterger temp = *this;
// m_Num++;
// return temp;
//
// }
//
//};
//
//ostream& operator<<(ostream& out, MyInterger myint)
//{
// cout << myint.m_Num;
// return out;
//
//
//}
//class Person
//{
//public:
//
// int* m_Age;
//
//
//public :
// Person(int age)
// {
// m_Age = new int(age);
//
//
// }
// //重载赋值运算符
// Person& operator=(Person& p)
// {
//
// if (m_Age != NULL)
// {
// delete m_Age;
// m_Age = NULL;
//
// }
//
// //提供深拷贝
// m_Age = new int(* p.m_Age);
//
//
//
// return *this;
//
//
//
// }
//
//
// ~Person()
// {
//
// if (m_Age != NULL)
// {
// delete m_Age;
// m_Age = NULL;
//
// }
// }
//
//
//};
//关系运算符重载
//class Person
//{
//public:
// string m_Name;
// int m_Age;
//
//
//public :
// Person(string name, int age)
// {
// this->m_Name = name;
// this->m_Age = m_Age;
// }
//
// bool operator == (Person& p)
// {
// if (this->m_Name == p.m_Name && this->m_Age == p.m_Age)
// {
// return true;
//
//
//
// }
// else
// {
// return false;
//
//
// }
//
//
// }
// bool operator!=(Person& p)
// {
// if (this->m_Name == p.m_Name && this->m_Age == p.m_Age)
// {
// return false;
//
//
// }
// else
// {
// return true;
//
// }
//
// }
//
//
//};
//函数调用运算符重载
class MyPrint {
public :
void operator()(string text)
{
cout << text << endl;
}
};
void test01()
{
MyPrint myFunc;
myFunc("helloword");
}
class MyAdd
{
public:
int operator()(int v1, int v2)
{
return v1 + v2;
}
};
void test02()
{
MyAdd add;
int ret = add(10, 10);
cout << "ret" << ret << endl;
//匿名对象调用
cout << "MyAdd()(100,100)" << MyAdd()(100, 100) << endl;
}
void test()
{
//MyInterger myInt;
++myInt==myInt.operator++()
//cout << ++myInt << endl;
myInt==myInt.
//myInt.operator++( 5);
//cout << myInt++ << endl;
//cout << myInt.operator++(5) << endl;
//Person p1(18);
//Person p2(20);
//Person p3(30);
///*p3.operator=(p1).operator=(p3);*/
//p1 = p2 = p3;
//cout << "p1的年龄为" << *p1.m_Age << endl;
//cout << "p2的年龄为" << *p2.m_Age << endl;
//cout << "p3的年龄为" << *p3.m_Age << endl;
//Person a("孙悟空", 18);
//Person b("孙悟空", 19);
a.operator==(b)等价于a==b
//if (a == b)
//{
// cout << "a和b相等" << endl;
//}
//else
//{
// cout << "a和b不相等" << endl;
//}
//if (a != b)
//{
// cout << "a和b不相等" << endl;
//}
//else
//{
// cout << "a和b相等" << endl;
//}
}
int main() {
test01();
test02();
system("pause");
return 0;
}
c++ 重载运算符
最新推荐文章于 2024-11-03 21:27:26 发布