C++でオーバーロードしたoperator=が正しく動作しない


C++で明示的にコピーコンストラクタ・代入演算子を実装したいのですが、  
代入が出来なくて悩んでいます。  
コンパイル自体は通ります。

[code]

    class A
    {
    public:
        int x;
    
        A() : x(0) {}
        A(int x) : x(x) {}
        A(const A& other) : A(other.x) {}
        A& operator=(const A& rhs)
        {
            return *this; //良く見かける書き方
            //return A(rhs); // 試したけど駄目
            //return *(new A(rhs)); // 試したけど駄目
        }
    };
    
    A _g = A(30);
    int main()
    {
        A a(10);
        A b(20);
        A c = a;    // OK
        b = a;      // Not Assigned
        _g = a;     // Not Assigned
    
    }
    
[/code]

環境：  
IDE： **Visual Studio 2019**  
C++言語標準： **ISO C++17 標準**




やりたいことって

[code]

    A& operator=(const A& rhs)
    {
        x = rhs.x;
        return *this;
    }
    
[/code]

ですよね？  
代入した際のメンバ変数に対する処理も記述しないと何もされません。  
Visual Studio 2019
を使用されているのであればデバッガでステップ実行して、b=aの行でステップインして動作を追ってみると、何が起こっているか見ることができます。




やりたいことって

[code]

    A& operator=(const A& rhs)
    {
        x = rhs.x;
        return *this;
    }
    
[/code]

ですよね？  
代入した際のメンバ変数に対する処理も記述しないと何もされません。  
Visual Studio 2019
を使用されているのであればデバッガでステップ実行して、b=aの行でステップインして動作を追ってみると、何が起こっているか見ることができます。

