image.png

    1. //.h
    2. #ifndef CPPSTUDY_DEMO7_1_COMPLEX_H
    3. #define CPPSTUDY_DEMO7_1_COMPLEX_H
    4. #include <iostream>
    5. using namespace std;
    6. class demo7_1_Complex {
    7. public:
    8. demo7_1_Complex(); //构造函数 实体创建的时候自动调用
    9. demo7_1_Complex(double r, double i);//构造函数
    10. virtual ~demo7_1_Complex(); //析构函数 实体销毁时候自动调用
    11. demo7_1_Complex(const demo7_1_Complex &x); //拷贝构造函数
    12. //get set
    13. double real() const { return _real; }
    14. void real(double d) { _real = d; }
    15. void image(double i) { _image = i; }
    16. double image() const { return _image; }
    17. //运算符重载
    18. demo7_1_Complex operator+(const demo7_1_Complex &x); //+
    19. demo7_1_Complex& operator=(const demo7_1_Complex &x); //=
    20. demo7_1_Complex &operator++(); //前置++
    21. demo7_1_Complex operator++(int); //后置++
    22. //protected:
    23. //friend
    24. friend ostream& operator<<(ostream& os, const demo7_1_Complex &x);
    25. friend istream& operator>>(istream& is, demo7_1_Complex &x);
    26. private:
    27. double _real;
    28. double _image;
    29. };
    30. #endif //CPPSTUDY_DEMO7_1_COMPLEX_H
    31. //.c
    32. #include "demo7_1_Complex.h"
    33. demo7_1_Complex::demo7_1_Complex() {
    34. _real = 0;
    35. _image = 0;
    36. cout << "demo7_1_Complex()" << endl;
    37. }
    38. demo7_1_Complex::demo7_1_Complex(double r, double i) {
    39. _real = r;
    40. _image = i;
    41. cout << "demo7_1_Complex(double r, double i)" << endl;
    42. }
    43. demo7_1_Complex::~demo7_1_Complex() {
    44. cout << "~demo7_1_Complex()" << endl;
    45. }
    46. demo7_1_Complex::demo7_1_Complex(const demo7_1_Complex &x) {
    47. _real = x._real;
    48. _image = x._image;
    49. cout << "demo7_1_Complex(const demo7_1_Complex &x)" << endl;
    50. }
    51. demo7_1_Complex demo7_1_Complex::operator+(const demo7_1_Complex &x) {
    52. demo7_1_Complex tmp;
    53. tmp._real = _real + x._real;
    54. tmp._image = _image + x._image;
    55. cout << "+" << endl;
    56. // return demo7_1_Complex(_real + x._real, _image + x._image);
    57. return tmp;
    58. }
    59. demo7_1_Complex& demo7_1_Complex::operator=(const demo7_1_Complex &x) {
    60. _real = x._real;
    61. _image= x._image;
    62. cout << "=" << endl;
    63. return *this;
    64. }
    65. demo7_1_Complex& demo7_1_Complex::operator++() { //前置++
    66. _real++;
    67. _image++;
    68. return *this;
    69. }
    70. demo7_1_Complex demo7_1_Complex::operator++(int) { //后置++
    71. demo7_1_Complex tmp(*this);
    72. _real++;
    73. _image++;
    74. return tmp;
    75. }
    76. ostream& operator<<(ostream& os, const demo7_1_Complex &x){
    77. os << "real value is:" << x._real << " image value is:" << x._image;
    78. return os;
    79. }
    80. istream& operator>>(istream& is, demo7_1_Complex &x){
    81. is >> x._real >> x._image;
    82. }