如果之前有人问过这个问题,请原谅我,我确信它已经问过了,但我找不到满意的答案。
我从沉重的 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;
}
};
我知道返回东西的副本很昂贵,我认为这意味着我想避免按值返回字符串或武器系统之类的东西,但是按值返回 int 是可以的。
这是正确的吗?我也知道我需要知道事物在内存中的位置,如果该对象被破坏并且某些事物仍然拥有对其名称的引用,那么返回对此类中某些事物的引用是否意味着危险?