Vir*_*cks 26 c++ size performance assembly arguments
在c ++中
class bar
{
int i;
char b;
float d;
};
void foo ( bar arg );
void foo ( bar &arg );
void foo ( bar *arg );
Run Code Online (Sandbox Code Playgroud)
这是一个示例类/结构和函数,
我有一些Q.
我知道什么是"现代编译器和CPU无关紧要",但如果我们谈论旧CPU或编译器呢?
提前致谢
cni*_*tar 22
指针和引用方法应该是完全可比的(速度,内存使用和生成的代码).
直接传递类会强制编译器复制内存并将bar
对象的副本放在堆栈上.更糟糕的是,在C++中,存在与此相关的各种讨厌的位(默认的复制构造函数和诸如此类).
在CI中总是使用(可能是const)指针.在C++中,您应该使用引用.