在C ++中继承类时,我理解成员是继承的。但是如何继承这些方法呢?
例如,在下面的代码中,我希望方法“getValues”不仅可以通过CPoly访问,还可以通过任何继承它的类访问。所以可以直接在CRect上调用“getValues”。
class CPoly {
private:
int width, height;
public:
void getValues (int* a, int* b)
{ *a=width; *b=height;}
};
class CRect: public CPoly {
public:
int area ()
{ return (width * height); }
};
换句话说,有没有办法继承简单通用方法的方法,比如getter和setter?
答案 0 :(得分:5)
可以使用getValues
来呼叫CRect
,因为getValues
是继承的。术语“方法”不是由C ++定义的。如果引用非静态成员函数 - 它们是成员并且继承到派生类。
您的错误不是getValues
未被继承,而是您尝试访问无法访问的成员width
和height
。
答案 1 :(得分:0)
一切都是继承的,在这方面成员变量和成员函数之间没有区别。
在CPoly
中,如果您希望使用您的班级的人查看成员(无论是函数还是变量),请使用public
。对于派生自CPoly
的类,如果您希望它们能够使用成员(无论是函数还是变量),那么您必须将它们设为public
或protected
。
在派生类型CRect
中,指定基类时,还必须为所有继承成员(无论是函数还是变量)指定默认访问成员。如果您指定public
,则public
继承的所有成员将保留public
。如果您指定protected
,则public
或protected
继承的所有成员都将为protected
。如果您指定private
,则所有继承的成员都将成为private
。