一、继承
有时候,我们想要写一个类实现某些功能,但又想同时具备另一个类的功能,这个时候,我就要用到类的第二大特点——继承
class ClassA
{
public:
ClassA(int x)
:_x(x)
{}
void setX(int x)
{_x = x;}
int getX()
{return _x;}
protected:
int _x;
};
注意到我用的是protected
而不是private
,这是为继承做准备
class ClassB: public ClassA
{
public:
ClassB(int x, int y)
_y(y)
{setX(x);}
void setY(int y)
{_y = y;}
int getY()
{return _y;}
protected:
int _y;
};
在ClassB
的定义中,加上了: public ClassA
(:
后的空格不一定要)
这代表ClassB
使用public
方式继承于ClassA
这会将ClassA
的public
部分作为自己的public
将ClassA
的protected
部分作为自己的protected
但是不可以继承ClassA
的private
部分
private
与protected
的差异就在此,所以我建议用protected
类似地,还有protected
和private
继承,将第一行中的public
进行替换即可,其含义如下表
public | protected | private | |
---|---|---|---|
public继承 | public | protected | 无法继承 |
protected继承 | protected | protected | 无法继承 |
private继承 | private | private | 无法继承 |
本序列的文章:
C++类的使用(一)
C++类的使用(二)—— explicit构造与const成员变量赋值
C++类的使用(三)—— 封装
C++类的使用(四)—— 继承
C++类的使用(五)—— 多态
C++类的使用(六)—— 判断继承