由于fishes
是一个私有成员变量,同一个类的所有成员函数都能访问它。
因此,没有必要将其作为参数传递。
也许明确指出fishes
是私有成员变量会更好:
class Aquarium {
private:
std::vector<Fish*> fishes; // 私有成员变量
public:
bool addFish(Fish* fish);
bool fishExists(unsigned int fishId);
};
如果你有一个派生类:
class DerivedAquarium : public Aquarium {
public:
bool derivedFishExists(unsigned int fishId, const std::vector<Fish*>& fishes);
};
在这种情况下,你需要将fishes
向量传递给派生类的成员函数(或许可以通过在基类中添加getFishes()
函数来实现)。
所以,基类的成员函数可以访问所有成员变量(包括私有成员)。但是,派生类的成员函数不能直接访问其基类的私有成员。要实现这一点,唯一的方法是使用友元声明(friend声明)。