• C++day04(类中特殊成员函数、匿名对象、友元、常成员函数和常对象、运算符重载)


    1> 思维导图

    2> 整理代码

    代码:

    算术运算符重载:

    1. #include
    2. using namespace std;
    3. class Person
    4. {
    5. //全局函数实现运算符重载需要权限
    6. friend const Person operator+(const Person L,const Person R);
    7. private:
    8. int a;
    9. int b;
    10. public:
    11. Person() {}
    12. Person(int a,int b){
    13. this->a=a;
    14. this->b=b;
    15. }
    16. void show(){
    17. cout << "a=" << a <<"b=" << b<
    18. }
    19. // 成员函数实现运算符重载
    20. // const Person operator+(const Person p)const{
    21. // Person temp;
    22. // temp.a=a+p.a;
    23. // temp.b=b+p.b;
    24. // return temp;
    25. // }
    26. const Person operator-(const Person p)const{
    27. Person temp;
    28. temp.a=a-p.a;
    29. temp.b=b-p.b;
    30. return temp;
    31. }
    32. const Person operator*(const Person p)const{
    33. Person temp;
    34. temp.a=a*p.a;
    35. temp.b=b*p.b;
    36. return temp;
    37. }
    38. const Person operator/(const Person p)const{
    39. Person temp;
    40. temp.a=a/p.a;
    41. temp.b=b/p.b;
    42. return temp;
    43. }
    44. };
    45. //全局函数实现运算符重载
    46. const Person operator+(const Person L,const Person R){
    47. Person temp;
    48. temp.a=L.a+R.a;
    49. temp.b=L.b+R.b;
    50. return temp;
    51. }
    52. int main()
    53. {
    54. Person p1(10,10);
    55. Person p2(10,20);
    56. Person p3=p1+p2;
    57. Person p4=p1-p2;
    58. Person p5=p1*p2;
    59. Person p6=p1/p2;
    60. p1.show();
    61. p2.show();
    62. p3.show();
    63. p4.show();
    64. p5.show();
    65. p6.show();
    66. return 0;
    67. }

    关系运算符重载:

    1. #include
    2. using namespace std;
    3. class Person
    4. {
    5. //全局函数实现运算符重载需要权限
    6. friend bool operator>(const Person L,const Person R);
    7. private:
    8. int a;
    9. int b;
    10. public:
    11. Person() {}
    12. Person(int a,int b){
    13. this->a=a;
    14. this->b=b;
    15. }
    16. void show(){
    17. cout << "a=" << a <<"b=" << b<
    18. }
    19. // bool operator>(const Person p)const{
    20. // if(a>p.a && b>p.b){
    21. // return true;
    22. // }
    23. // return false;
    24. // }
    25. bool operator==(const Person p)const{
    26. if(a==p.a && b==p.b){
    27. return true;
    28. }
    29. return false;
    30. }
    31. bool operator<(const Person p)const{
    32. if(a
    33. return true;
    34. }
    35. return false;
    36. }
    37. bool operator>=(const Person p)const{
    38. if(a>=p.a && b>=p.b){
    39. return true;
    40. }
    41. return false;
    42. }
    43. bool operator<=(const Person p)const{
    44. if(a<=p.a && b<=p.b){
    45. return true;
    46. }
    47. return false;
    48. }
    49. };
    50. //全局函数实现运算符重载
    51. bool operator>(const Person L,const Person R){
    52. if(L.a>R.a && L.b>R.b)
    53. return true;
    54. return false;
    55. }
    56. int main()
    57. {
    58. Person p1(10,10);
    59. Person p2(10,20);
    60. p1.show();
    61. p2.show();
    62. if(p2>p1){
    63. cout << "p2>p1" <
    64. }
    65. if(p2==p1){
    66. cout << "p2==p1" <
    67. }
    68. if(p2
    69. cout << "p2 <
    70. }
    71. if(p2>=p1){
    72. cout << "p2>=p1" <
    73. }
    74. if(p2<=p1){
    75. cout << "p2<=p1" <
    76. }
    77. return 0;
    78. }

    赋值运算符重载

    1. #include
    2. using namespace std;
    3. class Person
    4. {
    5. //全局函数实现运算符重载需要权限
    6. friend Person &operator+=(Person &L,const Person &R);
    7. private:
    8. int a;
    9. int b;
    10. public:
    11. Person() {}
    12. Person(int a,int b){
    13. this->a=a;
    14. this->b=b;
    15. }
    16. void show(){
    17. cout << "a=" << a <<"b=" << b<
    18. }
    19. // Person &operator+=(const Person p){
    20. // a+=p.a;
    21. // b+=p.b;
    22. // return *this;
    23. // }
    24. Person &operator-=(const Person p){
    25. a-=p.a;
    26. b-=p.b;
    27. return *this;
    28. }
    29. Person &operator*=(const Person p){
    30. a*=p.a;
    31. b*=p.b;
    32. return *this;
    33. }
    34. Person &operator/=(const Person p){
    35. a/=p.a;
    36. b/=p.b;
    37. return *this;
    38. }
    39. Person &operator%=(const Person p){
    40. a%=p.a;
    41. b%=p.b;
    42. return *this;
    43. }
    44. };
    45. //全局函数实现运算符重载
    46. Person &operator+=(Person &L,const Person &R){
    47. L.a+=R.a;
    48. L.b+=R.b;
    49. return L;
    50. }
    51. int main()
    52. {
    53. Person p1(10,10);
    54. Person p2(10,20);
    55. p1.show();
    56. p2.show();
    57. // cout << "+=";
    58. // p2+=p1;
    59. // p2.show();
    60. // cout << "-=";
    61. // p2-=p1;
    62. // p2.show();
    63. // cout << "*=";
    64. // p2*=p1;
    65. // p2.show();
    66. // cout << "/=";
    67. // p2/=p1;
    68. // p2.show();
    69. cout << "%=";
    70. p2%=p1;
    71. p2.show();
    72. return 0;
    73. }

    今日思维导图

  • 相关阅读:
    正则表达式高阶(一)
    盲盒商城系统开发抽奖系统方案大全
    随手记录第四话 -- elasticsearch基于docker安装以及SpringBoot集成使用
    为什么iphone邮箱里已发送邮件是空的
    【附源码】计算机毕业设计JAVA众筹平台网站
    Android音视频开发-AudioTrack
    C++之特殊数据成员
    docker安装seata(指定配置文件、数据库、容器数据卷等)
    手把手教你写一个JSON在线解析的前端网站1
    Web项目如何做单元测试
  • 原文地址:https://blog.csdn.net/weixin_53762703/article/details/133754944