关于visual c ++:C ++将对象传递给函数,不调用operator =

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=为已存在的对象调用,否则将使用构造函数(或复制构造函数)创建所需的实例