这是具有详细构造函数的类:
class A
{
public:
A() : _a(-1) { std::cerr << "ctor" << _a << std::endl; }
A(int a_) : _a(a_) { std::cerr << "ctor2 "<< _a << std::endl; }
~A() { std::cerr << "dtor "<< _a << std::endl; }
A(const A&) { std::cerr << "cctor "<< _a << std::endl;}
A(A &&) { std::cerr <<"mctor " << _a << std::endl; }
private:
int _a;
};
为什么在这个例子中只有一个构造函数是callet:
int main(int,char **)
{
A a(A(1));
}
不调用移动也不调用复制构造函数。它是由编译器自动优化的吗?