函数调用期间的 C++ 构造函数

C++ constructors during function calls

在 C++ 中,当您有一个按值传递给函数的对象时,将调用复制构造函数。比如在这个函数签名中:

void foo(Object o);

几年前有人告诉我,您可以传递适合作为函数参数的对象的构造函数的参数。因此,使用上面的函数签名 foo,假设 Object 具有构造函数:

Object(int a, int b);

我们可以这样调用函数 foo:

foo(1,2);

我找不到任何关于此的信息,我想我要么误解了我多年前听到的内容,要么就是那个人错了。除了:

,还有什么办法可以做到这一点吗?
foo(Object(1,2));

如果不是,是否存在无法在函数调用期间隐式调用此构造函数的原因?

A couple years ago someone told me that you can pass arguments that fit the constructor of an object that is an argument to a function.

如果你没记错的话,就是说错了。

鉴于你的功能和class,你可能不会使用:

f(1, 2);

但是,您可以使用:

f({1, 2});

如果匹配,{...} 将调用适当的构造函数。

个人喜好,我还是会用:

f(Object{1, 2});

IMO,使用 Object{1, 2} 比仅使用 {1, 2}.

时更清楚地表达了意图