![](/img/trans.png)
[英]What is the appropriate way to pass given vararg parameter to another function?
[英]what happens if I pass a struct to a vararg function?
void f(int count, ...){
//whatever
}
struct somestruct{
size_t a, b, c;
};
int main() {
somestruct s;
f(1, s); //what is actually passed?
}
是否将整个struct
复制并传递到堆栈上? 如果是,则调用复制构造函数吗? 指针通过了吗? 这样安全吗?
是的,如果您传递左值,则将完成左值到右值的转换,这意味着调用复制构造函数将对象复制到新副本中并将其作为参数传递。
void f(...)
使用按位复制。 因为somestruct
只有C ++内置类型,所以不会为您的somestruct
生成默认的构造函数或复制构造函数。
Is this safe?
是的,这是绝对安全的。
我将向您介绍“内部C ++对象模型” chapter 2 The Semantics of Constructors
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.