两个语句C++之间的区别

nee*_*eel 2 c++ constructor class operator-overloading object

说我有一个class A并且有声明:

A a1(1);

A2; A2(1);

这两个陈述有什么区别?
我知道第一个陈述是直截了当的,但是在陈述2旁边发生了什么?

Rei*_*ica 5

A a1(1);
Run Code Online (Sandbox Code Playgroud)

这通过使用参数调用构造函数来创建a1类的实例.A1

A a2; a2(1);
Run Code Online (Sandbox Code Playgroud)

这个实际上是两个陈述.第一个,通过调用默认构造函数来A a2;创建a2类的实例.第二个,然后使用参数调用(或在未定义的情况下产生错误).AAa2(1);A::operator()1Aoperator()