C++继承和派生

在C++语言中,一个 派生类可以从一个 基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为 多继承
派生类的定义格式
单继承的定义格式如下:
1
2
3
4
class <派生类名>:<继承方式><基类名>
{
<派生类新定义成员>
};
其中,class是关键词,<派生类名>是新定义的一个类的名字,它是从<基类名>中派生的,并且按指定的<继承方式>派生的。<继承方式>常使用如下三种关键字给予表示:
public 表示公有继承;
private 表示私有继承;
protected 表示保护继承;
多继承的定义格式如下:
1
2
3
4
5
6
7
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
 
{
 
<派生类新定义成员>
 
};
可见,多继承与单继承的区别从定义格式上看,主要是多继承的 基类多于一个。
如果省略继承方式,对'class'将采用私有继承,对'struct'将采用公有继承。
也就是说
1
2
3
4
5
class  Base1{};
 
struct  Base2{};
 
class  Derive:Base1,Base2{};
那么,Derive类将 私有继承Base1,公有继承Base2。相当于:
1
class  Derive: private  Base1, public  Base2{};

公有继承时,水平访问和垂直访问对 基类中的公有成员不受限制;
私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问;
保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承。
对于基类中的私有成员,只能被基类中的成员函数和 友元函数所访问,不能被其他的函数访问。
基类与 派生类 的关系 任何一个类都可以派生出一个新类,派生类也可以再派生出新类,因此,基类和派生类是相对而言的。
#include<iostream>
using namespace std;
class Base
{
public:
	Base() { va = 0; vb = 0; }
	Base(int a,int b) { va = a; vb = b; }
	void set_va(int a) { va = a; }
	void set_vb(int b) { vb = b; }
	int get_va() { return va; }
	int get_vb() { return vb; }
	void print();
	~Base() {};

private:
	int va;
	int vb;
};

void Base::print()
{
	cout << "va = " << va << endl;
	cout << "vb = " << vb << endl;
}

class Derived : public Base
{
private:
	int vc;
public:
	Derived();
	Derived(int a, int b, int c);
	int get_vc() { return vc; }
	void set_vc(int c) { vc = c; }
	void print();
};
Derived::Derived(): Base()
{
	vc = 0;
}
Derived::Derived(int a, int b, int c) : Base(a, b)
{
	vc = c;
}
void Derived::print()
{
	Base::print();
	cout << "vc = " << vc << endl;
}
int main()
{
	cout << "Base class:\n";
	Base x(10, 20);
	x.print();
	cout << "Derived class:\n";
	Derived y(30, 40, 50);
	y.print();
	y.set_va(60);
	y.set_vb(70);
	y.set_vc(80);
	y.print();
	return 0;
}



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值