引数を渡すには、値、ポインタ、および参照の3つの方法があります。
値による:引数の新しいコピーが作成されます。このような大きなオブジェクトの場合std::string
、高価になる可能性があります。のような小さなものについてはint
、それは問題ではありません。
void myFunc(std::string str) { ... }
std::string mySuperLongString = getSuperLongString()
myFunc(mySuperLongString) // will make a copy of the long string. Expensive.
ポインタを使用する場合:ポインタを渡すときは、データのアドレスを渡すだけです。実際には、ポインタは値によって渡されますが、アドレスを渡すだけなので、簡単な操作です。
void myFunc(std::string *str) { ... }
std::string mySuperLongString = getSuperLongString()
myFunc(&mySuperLongString) // Pass the address of the string. Light operation
参照あり:いくつかの追加の安全性チェックがあることを除いて、ポインターの使用と非常に似ています。たとえば、参照を一度割り当てた後で再割り当てすることはできません。また、参照を、作業しているものの単なる別の名前として扱うことができます(つまり、間接参照演算子を使用する必要はなく*
、->
ポインターのように) 。参照の使用は、ポインターの使用と同じくらい軽量ですが、より安全です。これは、引数C++を渡すための推奨される方法です。
void myFunc(std::string& str) { ... }
std::string mySuperLongString = getSuperLongString()
myFunc(mySuperLongString) // Pass a reference to the string. Light operation