これまでに質問されたことがある場合はご容赦ください。確かにそうですが、満足のいく答えが見つかりませんでした。
私は重いJavaのバックグラウンドからcppに来ており、コピーではなくオブジェクトへの参照/ポインターをいつ返すかを理解したいと思います。
次のクラス定義の場合:
class SpaceShip {
string name;
WeaponSystem weaponSystem; //represents some object, this is just an example, I dont have this type of object at all in my program
int hull;
string GetName() const {
return name;
}
WeaponSystem GetWeaponSystem() const {
return weaponSystem;
}
int GetHull() const {
return hull;
}
};
物事のコピーを返すのは費用がかかることを知っています。これは、文字列やweaponSystemのようなものを値で返すのは避けたいという意味だと思いますが、intを値で返すのは問題ありません。
これは正しいですか?また、メモリ内のどこに物事が存在するかを認識する必要があることも知っています。このクラスの何かへの参照を返すことは、このオブジェクトが破壊され、何かがその名前への参照をまだ所有している場合、将来的に危険を意味しますか?