在下面的代码中变量'id'是不可访问的类马,这是一个继承问题吗?访问修饰符问题?如有任何帮助,不胜感激。
class Animal
{
private:
int id;
};
class Horse : public Animal
{
public:
Horse(){
if((id % 2) == 1) { id++ };
}
};
类Horse
在这种情况下只继承公共和受保护的元素,如果您使用:
class Horse : public Animal
要继承id
,可以在Animal
类中定义这个私有元素为protected:
class Animal
{
protected:
int id;
};
您可能希望id
是protected
而不是private
,那么。或者更好的是,使用您编写的访问器…
id
对Animal
是私有的,因此Horse
无法访问。一个令人满意的设计是通过getID()
访问id
,尽管您需要一个setter和现有的getter方法。
将变量声明为private会导致只有声明该变量的类才能访问它,如果您希望继承基本类的类也能够访问该变量,请使用protected。