#include <string>
#include <iostream>
using namespace std;
class A{
public:
static string x;
string s;
A(string ss){
cout<<x+":A被构造"<<endl;
s=ss;
}
~A(){
cout<<x+":A被析构"<<endl;
}
A(const A& a){
s=a.s;
cout<<x+":A被拷贝"<<endl;
}
A & operator=(const A &ss){
cout<<x+":A被赋值"<<endl;
s="aas";
return *this;
}
};
/*A & A::operator=(const A &ss){
cout<<x+":A被赋值"<<endl;
s="aas";
return *this;
}*/
string A::x="init";
A fun2(){
A::x="fun2";
A s("aaa");
cout<<"局部变量地址:"<<&s<<endl;
return s;
}
A fun3(){
//A s=A(fun2());
//cout<<"fun3:"<<&s<<endl;
//A s(fun2());
//cout<<"fun3变量地址:"<<&b<<endl;
A::x="fun3";
A s("abc");
A b("a");
b=s;
A m(s);
return b;
}
int main(){
A &s=fun3();
A b(s);
//s=s+"s";
cout<<"main变量地址:"<<&s<<endl;
cout<<s.s<<endl;
system("pause");
}
之前写了
A b=s; 一直无法调用赋值操作符,此时调用的是复制构造函数。
A b; b=s; 调用赋值操作符