两个函数的形参都可以对应的上的话,倾向于使用赋值运算符重载函数。
class Bird
{
private:
string str;
public:
Bird(string temp = "") :str(temp) { cout << "构造函数被调用" << endl;}
void operator = (string temp)
{
this->str = temp;
cout << "运算符重载函数被调用。" << endl;
}
void print() { cout << str << endl; }
~Bird() { cout << "析构函数被调用" << endl; }
};
int main()
{
string a = "xiejunyan";
string b = "yanjunxie";
Bird bird1 = a;
bird1.print();
bird1 = b;// see here
bird1.print();
}
构造函数被调用
xiejunyan
运算符重载函数被调用。
yanjunxie
析构函数被调用
class Bird
{
private:
string str;
public:
Bird(string temp = "") :str(temp) { cout << "构造函数被调用" << endl;}
/*void operator = (string temp)
{
this->str = temp;
cout << "运算符重载函数被调用。" << endl;
}*/
void print() { cout << str << endl; }
~Bird() { cout << "析构函数被调用" << endl; }
};
int main()
{
string a = "xiejunyan";
string b = "yanjunxie";
Bird bird1 = a;
bird1.print();
bird1 = b;// see here
bird1.print();
}
构造函数被调用
xiejunyan
构造函数被调用
析构函数被调用
yanjunxie
析构函数被调用
第二种情况等于重新构造了新的对象。即重新定义了一个,所以有析构和重新构造,第一种情况就是赋值。