我只是创建了一个这样的类:
class GreatClass
{
public:
GreatClass(){cout<<"Default Constructor Called!\n";}
GreatClass(GreatClass &gc){cout<<"Copy Constructor Called!\n";}
GreatClass(const GreatClass &gc){cout<<"Copy Constructor (CONST) Called!\n";}
~GreatClass(){cout<<"Destructor Called.\n";}
GreatClass& operator=(GreatClass& gc){cout<<"Assign Operator Called!";return gc;}
const GreatClass& operator=(const GreatClass& gc){cout<<"Assign Operator (CONST) Called!";return gc;}
};
GreatClass f(GreatClass gc)
{
return gc;
}
在 main() 函数中,有两个版本:
版本#1:
int main()
{
GreatClass g1;
GreatClass G = f(g1);
}
版本#2:
int main()
{
GreatClass g1;
f(g1);
}
它们都生成相同的输出:
Default Constructor Called!
Copy Constructor Called!
Copy Constructor Called!
Destructor Called.
Destructor Called.
Destructor Called.
我不明白为什么我分配f(g1)
给G
. 此时调用了什么构造函数或运算符?
谢谢。