C++程序设计(六)—— 继承和派生

本文详细介绍了C++中的继承和派生概念,包括单一继承中的构造函数、析构函数、保护成员和赋值兼容规则,以及多重继承、二义性处理和友元在派生中的应用。通过实例解析了is-a与has-a的区别,以及如何使用作用域分辨符解决二义性问题。
摘要由CSDN通过智能技术生成

一、继承和派生的基本概念

        从一个或多个以前定义的类(基类)产生新类的过程称为派生,这个新类称为派生类。基类和派生类又可以分别叫做父类和子类。派生的新类可以增加或重新定义数据和操作,这就产生了类的层次性。

        类的继承是指派生类继承基类的数据成员和成员函数。继承通常用来表示类属关系,不能将继承理解为构成关系。当从现有类中派生出新类时,派生类可以有以下几种变化:

① 增加新的成员;

② 重新定义已有的成员函数;

③ 改变基类成员的访问权限。

        C++中有两种继承:单一继承和多重继承。

二、单一继承

1、派生类的构造函数和析构函数

        先看一个简单示例:

#include <iostream>
using std::cout;

class Point {
private:
	int x, y;
public:
	Point(int a, int b) {
		x = a;
		y = b;
		cout << "正在初始化Point类的对象" << "\n";
	}

	~Point() {
		cout << "销毁Point类的对象" << "\n";
	}

	void showXY() {
		cout << "x=" << x << ",y=" << y << "\n";
	}
};

class Rectangle: public Point {//派生类继承基类并使用访问控制
private:
	int width, height;
public:
	Rectangle(int a, int b, int c, int d) :Point(a, b) {//定义派生类的构造函数
		width = c;
		height = d;
		cout << "正在初始化Rectangle类" << "\n";
	}

	~Rectangle() {
		cout << "销毁Rectangle类的对象" << "\n";
	}

	void showWH() {
		cout << "W=" << width << ",H=" << height << "\n";
	}
};
#include "Example1.h"
void example1();

int main() {
	example1();
	return 0;
}

void example1() {
	Rectangle r(1, 2, 3, 4);
	r.showWH(); //调用派生类的成员函数
	r.showXY(); //调用基类的成员函数
//	正在初始化Point类的对象
//	正在初始化Rectangle类
//	W=3,H=4
//	x=1,y=2
//	销毁Rectangle类的对象
//	销毁Point类的对象
}

        派生类的声明要在类名后添加一个冒号,冒号后面是访问控制关键字(public、protected、private),之后是基类名。 由于构造函数是不被继承的,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值