qfedu-cpp-level/day5/d1.cpp

56 lines
922 B
C++
Raw Permalink Normal View History

2023-08-14 17:20:39 +08:00
// = 赋值重载
// 注意 = 重载时,可能会调用类本身的拷贝构造函数。如果左值是没有创建的对象时,
// 会调用类的拷贝构造函数
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class A
{
private:
int x;
public:
A(int x) : x(x)
{
cout << "A(int x)" << endl;
}
A(const A &obj)
{
cout << "A(A &obj)" << endl;
this->x = obj.x;
}
A &operator=(const A &other)
{
cout << "A &operator=(A&other)" << endl;
this->x = other.x;
return *this;
}
public:
void show()
{
cout << "x = " << x << endl;
}
};
int main()
{
A a1(100), a2(200);
A a4 = 300; // A(300)
a4 = 400; // operator=()
A a3 = a1; // A(a1)
a3.show();
a3 = a2; // operator=() 调用赋值重载函数
a3.show();
a3 = a4;
a3.show();
return 0;
}