继承与派生
继承:新的类从已有的类处得到已有特性的过程
派生:已有的类把自己的特性共享,以此为基础产生新的类的过程
格式:class 派生类名: 继承方式 基类名 {}
,其中{}
中写的是派生类自己的类体;继承方式有public
、private
和protected
三种。如果不写继承方式,默认继承方式为private
。
ps.若有多个基类,之间用逗号隔开
class dad1{...};
class dad2{...};
class son: public dad1
{
...
};
class dau: public dad1, public dad2
{
...
};
三种继承方式&三种分区
- 基类
public
分区的变量可以被继承; - 基类
protected
分区的变量可以被继承; - 基类
private
分区的变量不可被继承;
ps.protected
也是一种类型,与public和private同级,可以被继承,但不可以从类体外访问
class dad{//基类dad
private:
int wife;//不可以被继承
public:
int fame;//可以被继承
protected:
long long money;//可以被继承
}
- 使用
public
继承:完全照搬- 基类的
public
被继承,成为派生类的public
; - 基类的
protected
被继承,成为派生类的protected
- 基类的
- 使用
protected
继承:全都protected- 基类的
public
被继承,成为派生类的protected
; - 基类的
protected
被继承,成为派生类的protected
- 基类的
- 使用
private
继承:全都private- 基类的
public
被继承,成为派生类的private
; - 基类的
protected
被继承,成为派生类的private
- 基类的
**ps.因为不考填选,这块的内容了解即可,实际操作中无脑用public
**能解决大部分问题
继承特性的基本用法
在派生类中,继承过来的东西直接当自己的用,不用再花里胡哨的搞什么格式,也不需要对象
class dad{
public:
void output(){ //基类的公有成员函数
cout<<"666";
}
int fame;
};
class son: public dad
{
public:
void Print(){
output();//直接访问基类的公有成员函数
fame++;//直接访问基类的公有成员
}
};