回答編集履歴

1 誤記

KSwordOfHaste

KSwordOfHaste score 18148

2018/05/31 04:09  投稿

問題はconstではなくて`&`の有無による影響が大きいです。
簡単な例を挙げますと
```C++
class A {
 int v[100];
}
void foo(A a);
void bar(A& a);
```
アドレスが64bit, int型のサイズが32bitの環境で上記を動かすとすると、
fooを呼び出すとき、引数をスタックに積むには少なくとも400バイトのメモリーのコピーが必要になるでしょう。しかしbarを呼び出す際にはたかだか8バイトの情報(アドレス)しかスタックへ積む必要がないです。
fooを呼び出すとき、引数をスタックに積むには少なくとも400バイトのメモリーのコピーが必要になるでしょう。しかしbarを呼び出す際にはたかだか8バイトの情報(アドレス)しかスタックへ積む必要がないです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る