函数调用期间的 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}
.
时更清楚地表达了意图
在 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}
.