一、介绍
二、名称说明
继承:就是将之前做好的类功能复制过来,不用重复再去实现
派生:把继承类,然后添加新的功能生成的新类过程称为派生
基类:被继承的类为基类
派生类:生成的新类为派生类
三、继承示例:
1、编写基类
//定义类 基类
class Box{
public://后面的成员可以被外面使用
int len;
int weight;
int height;
int get_v();
void set( int lenghth, int bre, int hei);
private://后面的成员不能被外面使用,默认为此成员,外面访问会报错
int test1;
int set_test1(int x){test1 = x;}
int get_test1(){return test1;}
protected://保护成员,外面访问会报错
int test2;
};
int Box::get_v()
{
int ret = len * weight * height;
return ret;
}
void Box::set( int lenghth, int bre, int hei)
{
len = lenghth;
weight = bre;
height = hei;
}
2、继承
class derived-class: access-specifier base-class
//定义类 派生类
class GiftBox:public Box//公有继承 基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问
{
public://后面的成员可以被外面使用
int play_music(){cout << "music played"<<"\n";}
private://后面的成员不能被外面使用,默认为此成员,外面访问会报错
protected://保护成员,外面访问会报错
};
3、创建对象
//定义对象
GiftBox giftbox;
int v;
giftbox.set(1,2,3);
v = giftbox.len * giftbox.height * giftbox.weight;
cout << "giftbox 体积:" << v <<endl;
giftbox.play_music();
4、完整代码
#include<iostream>
using namespace std;//使用标准输入输出
/*加了直接使用cout作为标准输出,不加这行输出得用std::cout*/
//定义类 基类
class Box{
public://后面的成员可以被外面使用
int len;
int weight;
int height;
int get_v();
void set( int lenghth, int bre, int hei);
private://后面的成员不能被外面使用,默认为此成员,外面访问会报错
int test1;
int set_test1(int x){test1 = x;}
int get_test1(){return test1;}
protected://保护成员,外面访问会报错
int test2;
};
int Box::get_v()
{
int ret = len * weight * height;
return ret;
}
void Box::set( int lenghth, int bre, int hei)
{
len = lenghth;
weight = bre;
height = hei;
}
//定义类 派生类
class GiftBox:public Box//公有继承 基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问
{
public://后面的成员可以被外面使用
int play_music(){cout << "music played"<<"\n";}
private://后面的成员不能被外面使用,默认为此成员,外面访问会报错
protected://保护成员,外面访问会报错
};
int main()
{
//定义对象
GiftBox giftbox;
int v;
giftbox.set(1,2,3);
v = giftbox.len * giftbox.height * giftbox.weight;
cout << "giftbox 体积:" << v <<endl;
giftbox.play_music();
return 0;
}
5、编译执行
四、继承类型
公有继承(public):基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
保护继承(protected): 基类的公有和保护成员将成为派生类的保护成员。
私有继承(private):基类的公有和保护成员将成为派生类的私有成员。
五、多重继承
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};
六、继承的析构、构造、和重载