CS の課題としてクラスに取り組んでいてfraction
、次のコードを書きました。
fraction fraction::add(fraction other) {
fraction temp;
/* manipulate temp */
return temp;
}
これは完全に機能し、新しいfraction
オブジェクトを作成してから呼び出し元のコードに返しました。
問題は、なぜこれが機能したのかということです。私の分数は、メソッドが返されtemp
たときにスコープ外になり、破棄されるはずですが、エラーなしで呼び出し元のコードに戻されます。add
ローカルスコープで何かを返すと、スコープ外になった後も存在し続けるのはなぜですか?