c++ - C/C++如何复制结构?

标签 c++ c struct copy

在 C/C++ 中按值传递结构时,必须复制结构内容。编译器如何实现这一点?即,通常会为此拷贝发出哪些汇编指令?

这些有多快,什么时候,例如与调用 memcpy 相比?

现在考虑这段代码:

struct X { int i, j, k; };

void foo(X x);

void foo( int i, int j, int k);

调用 foo(X) 和 foo(int,int,int) 有什么区别,或者生成的汇编代码可能相同(考虑参数的传递)?

最佳答案

在 C++ 中

How do compilers achieve that?

他们为该类/结构调用复制构造函数。如果您不提供一个或您提供一个,则隐式生成一个。

How fast are these, when, e.g. compared to a call to memcpy?

取决于类及其成员。分析应该给你一个更清晰的画面。
但是,应避免使用 memcpy 复制类实例。

在 C 中

How do compilers achieve that?

他们执行 shallow copy 该结构。出于所有实际目的,您可以将其视为与 memcpy 相同。

关于c++ - C/C++如何复制结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14893639/

相关文章:

c - C 中涉及常量的算术表达式类型

c - 关于C中结构体命名空间的一些问题

c++ - 我可以使用预处理器将一种类型声明替换为另一种类型声明吗?

c++ - getValue 错误

c - 多重定义和仅 header 库

c - 在主函数启动之前出现段错误 11(可能在结构中)

c - 结构体中的多维动态数组,大小由 C 中同一结构体中的 int 定义

C++0x 静态初始化和线程安全

c++ - 在 native C++ 的托管 dll 中使用对象

go - 结构初始化的嵌套数组 : how to do if constructors for both struct are available?