I would like to know if copying an object in the following manner is acceptable vis-a-vis copying the individual elements.
#include <iostream>
using namespace std;
class abc{
public:
    abc(int a = 10, int b = 5);
    abc(const abc &obj, int b = 10);
    int ret_x() { return x; }
    int ret_y() { return y; }
private:
    int x;
    int y;
};
abc::abc(int a, int b)
    : x(a),
    y(b)
{
}
abc::abc(const abc &obj, int b)
{
    if (this != &obj) {
        *this = obj;    -----> Copying the object
    }
    y = b;
}
int main()
{
    abc a1;
    cout << "A1 values: " << a1.ret_x() << "\t" << a1.ret_y() << endl;
    abc a2(a1, 20);
    cout << "A2 values: " << a2.ret_x() << "\t" << a2.ret_y() << endl;
    return 0;
}
Edit:
Use case:
The issue is that object a1 is auto-generated and hence any newly introduced members in the class could not be updated. I could provide a member function to update the new members, sure, but wanted to explore this option.
The code works fine, but is the method correct?
Thanks!
 
     
    