C++ 赋值运算符重载



  • 赋值运算符重载

    您可以像其他运算符一样重载赋值运算符(=),它可以像复制构造函数一样用于创建对象。以下示例说明了如何重载赋值运算符。
    
    #include <iostream>
    using namespace std;
     
    class Distance {
       private:
          int feet;             // 0 to infinite
          int inches;           // 0 to 12
          
       public:
          // required constructors
          Distance() {
             feet = 0;
             inches = 0;
          }
          Distance(int f, int i) {
             feet = f;
             inches = i;
          }
          void operator = (const Distance &D ) { 
             feet = D.feet;
             inches = D.inches;
          }
          
          // method to display distance
          void displayDistance() {
             cout << "F: " << feet <<  " I:" <<  inches << endl;
          }
    };
    
    int main() {
       Distance D1(11, 10), D2(5, 11);
    
       cout << "First Distance : "; 
       D1.displayDistance();
       cout << "Second Distance :"; 
       D2.displayDistance();
    
       // use assignment operator
       D1 = D2;
       cout << "First Distance :"; 
       D1.displayDistance();
    
       return 0;
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    First Distance : F: 11 I:10
    Second Distance :F: 5 I:11
    First Distance :F: 5 I:11