C++ passing an object to a function, the operator= is not called
下面是代码片段:
class MyClass { public: MyClass(char chIn) { std::cout << "Constructor!" << std::endl; }
MyClass & operator= (char chIn) { std::cout <<"Assigment operator!" << std::endl; } } ;
void Func(MyClass objIn) { return; }
int _tmain(int argc, _TCHAR* argv[]) { Func('T'); system("PAUSE");
return 0; }
在上例中,对象的构造函数被调用!!!!!这是为什么?不应该调用分配运算符吗?因为我们要给函数参数赋值,不是吗?
operator=为已存在的对象调用,否则将使用构造函数(或复制构造函数)创建所需的实例