欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++继承

程序员文章站 2022-05-31 20:16:48
...

继承

C++中的继承,允许我们依据一个类来创建另一个类,称为父类和子类,父类的部分内容可以在子类中使用。继承呢又分为单继承和多继承,单继承很好理解,就是只有一个父类。多继承有多个父类。就举个例子,记得小时候家里种冬瓜和西瓜,我们知道冬瓜个头特别大,西瓜个头不是很大,但可以直接吃很甜。所以就把两个幼苗的表皮刮破,然后紧紧的绑在一起,过一段时间两株幼苗长在了一起,然后将西瓜的根部和冬瓜的头部剪掉,这样剩下的一株植物就是冬瓜的根西瓜的叶子。这样长出来的西瓜个子像冬瓜一样大。多继承就和这个相似,子类继承多个父类的属性,最终形成一个功能强大的类。

单继承

如何定义子类呢?

class 子类名字:继承方式  父类的名字

继承方式有三种,分别是public、protected、private.那么这三种继承方式分别有什么特点呢?

  • public继承:父类的公有成员成为子类的公有成员,保护成员成为子类的保护成员,私有成员子类不可以直接访问,可以通过父类的公有成员或者保护成员来访问。
  • protected继承:父类的公有成员成为子类的保护成员,保护成员成为子类的保护成员,私有成员子类成员不可直接访问。
  • private继承:父类中的公有成员和保护成员成为子类的私有成员。父类的私有成员不可以直接访问。
#include <iostream>
using namespace std;

class shape{
	public:
		void setW(int w);
		void setH(int h);
		shape();
		~shape();
	protected:
		int getW(void);
		int getH(void);
	private:
		int width;
		int height;
};

shape::shape()
{
	cout << "父类构造函数被调用" << endl;
}
shape::~shape()
{
	cout << "父类析构函数被调用" << endl;
}
void shape::setW(int w)
{
	this->width = w;
}
void shape::setH(int h)
{
	this->height = h;
}
int shape::getW(void)
{
	return this->width;
}
int shape::getH(void)
{
	return this->height;
}


/*
公有继承,父类的公有成员成为子类公有成员,保护成员成为子类的保护成员
父类的私有成员不能被子类直接访问,需要通过父类的公有或保护成员去访问。
*/
class rect:public shape
{
	public:
		int getS();
		rect();
		~rect();
};

rect::rect()
{
	cout << "子类构造函数" << endl;
}
rect::~rect()
{
	cout << "子类析构函数" << endl;
}
int rect::getS()
{
	return getH() * getW();
}
int main()
{
   rect r;
	r.setW(10);
	r.setH(20);
	cout << "The Rectangle area is :" << r.getS() << endl;
   return 0;
}

运行结果:

父类构造函数被调用
子类构造函数
The Rectangle area is :200
子类析构函数
父类析构函数被调用

多继承

多继承的定义形式

class 子类:继承方式  父类A,继承方式  父类B,....
相关标签: 日常