为什么不调用复制构造函数?

时间:2016-09-11 20:38:26

标签: c++

// Example program
#include <iostream>
#include <string>

using namespace std;

class Test
{
public:
    Test()
    {
        cout << "Default constructor" << endl;
    }

    Test(const Test& ob)
    {
        cout << "lvalue- copy constructor" << endl;
    }

   Test& operator=(const Test& ob)
    {
        cout << "lvalue - assignment" << endl;
        return *this;
    }
};

Test getObj()
{
    Test ob;
    return ob;
}

void f1(const Test& ob)
{
    cout << "f1" << endl;
}

int main()
{
    f1(getObj());
}

Output:
Default constructor
f1

鉴于f1()中的ob是在堆栈上分配的,我希望调用复制构造函数来创建一个临时对象,其引用传递给f1()。看起来并非如此。有什么想法吗?

我已经使用符合C ++ 98的编译器编译了程序,并关闭了所有优化。

0 个答案:

没有答案