为什么没有调用构造函数?

时间:2016-06-18 08:58:05

标签: c++

为什么当这个类的对象作为参数传递给函数时,为什么没有调用类A的构造函数?

class A
{
public:
    A()
    {
        cout << "A\n";
    }
};

void f_n(A val)
{

}

int main()
{
    A a;
    f_n(a);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

这是因为在此上下文中使用了复制构造函数。要检查它,请添加显式实现:

A(A const&)
{
    std::cout << "A const&\n";
}  

您尚未定义一个,但编译器会为您合成复制构造函数。但是当它没有生成时会有cases