Assignment operator - Self-assignment

前端 未结 3 1052
梦如初夏
梦如初夏 2021-01-08 01:25

Does the compiler generated assignment operator guard against self assignment?

class T {

   int x;
public:
   T(int X = 0): x(X) {}
};

int main()
{
   T a(         


        
3条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-08 01:47

    This is an easy one to check empirically:

    #include 
    struct A {
      void operator=(const A& rhs) {
        if(this==&rhs) std::cout << "Self-assigned\n";
      }
    };
    
    struct B {
      A a;
    };
    
    int main()
    {
      B b;
      b = b;
    }
    

提交回复
热议问题