#include <iostream>
using namespace std;
class A;
class A {
private:
int a;
public:
explicit A(int a_ = 10);
A(const A &a_); //复制构造函数必须加const,否则A aaa = A(aa_);会报错
~A();
A &operator=(const A &a_);
int get_a() const;
void set_a(int a_);
};
A::A(int a_) : a(a_)
{
cout << "构造函数A" << endl;
return;
}
A::A(const A &a_)
{
*this = a_;
cout << "复制构造函数A" << endl;
return;
}
A::~A()
{
cout << "析构函数~A" << endl;
return;
}
A &A::operator=(const A &a_)
{
*this = a_;
cout << "赋值运算符重载函数A" << endl;
return *this;
}
int A::get_a() const
{
return this->a;
}
void A::set_a(int a_)
{
this->a = a_;
return;
}
int main(int argc, char *argv[])
{
int aa_ = 100;
A aaa = A(aa_); // 这里未调用复制构造函数,怀疑编译器优化为A aaa(aa_);
return 0;
}