繁体   English   中英

如果将结构传递给vararg函数会怎样?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM