【问题标题】:C++ passing an object to a function, the operator= is not calledC ++将对象传递给函数,不调用operator =
【发布时间】:2013-08-23 16:59:22
【问题描述】:

所以这里是sn-p的代码:

class MyClass { public: MyClass(char chIn) { std::cout

MyClass & operator= (char chIn) { std::cout

void Func(MyClass objIn) { return; }

int _tmain(int argc, _TCHAR* argv[]) { Func('T');系统(“暂停”); 返回0; }

在上面的例子中,对象的构造函数被调用!!!为什么会出现这种行为?不应该调用赋值运算符吗?因为我们正在为函数参数赋值,不是吗?

【问题讨论】:

    标签: visual-c++


    【解决方案1】:

    operator= 为已经存在的对象调用,否则使用构造函数(或复制构造函数)来创建所需的实例

    【讨论】:

    • 但是函数参数不是已经存在的对象吗。我的意思是它不是在分配给它的值之前创建的吗?
    • @sasho648 不,不是。它是在函数被调用后创建的。
    • 使用必须分配给它的值(传递给它)????但这是不明智的。在这种情况下,如果我们不使用它们创建对象并在之后立即传递它,我们就不能将多个参数传递给它的构造函数。赋值运算符始终只有一个参数,因此在构造对象之后调用它会更合乎逻辑。
    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多