C++上机 派生类与继承

一、实验目的

1. 掌握派生类的声明方法和派生类构造函数的定义方法。

2. 掌握不同方式下,基类成员在派生类中的访问属性和访问规则。

二、实验内容

#include<iostream>
 
using namespace std;
 
class Base {
public:
	void setx(int i) {
		x = i;
	}
	int getx() {
		return x;
	}
public:
	int x;
};
 
class Derived :public Base {
public:
	void sety(int i) {
		y = i;
	}
	int gety() {
		return y;
	}
	void show() {
		cout << "Base::x=" << x << endl;
	}
public:
	int y;
};
 
int main() {
	Derived bb;
	bb.setx(16);
	bb.sety(25);
	bb.show();
	cout << "Base::x=" << bb.x << endl;
	cout << "Derived::y=" << bb.y << endl;
	cout << "Base::x=" << bb.getx() << endl;
	cout << "Derived::y=" << bb.gety() << endl;
	return 0;
}

将基类 Base 中数据成员 x 的访问权限改为 private 时,会出现哪些错误,为什么?
将基类 Base 中数据成员×的访问权限改为 protected 时,会出现哪些错误,为什么?
在原程序的基础上,将派生类Derived 的继承方式改为 private 时,会出现哪些错误,为什么?
在原程序的基础上,将派生类 Derived 的继承方式改为 protected 时,会出现哪些错误,为什么?

1. 28和38行无法访问x,因为x的访问权限改为private时,派生类也无法直接继承和访问基类的x。
2. 38行的bb.x出现错误,因为x的访问权限改为protected时,派生类的对象无法直接访问x。
3. 35行的bb.setx()、38行的bb.x、40行的bb.gety()出现错误,因为继承方式变为私有继承后,对象无法直接访问类中的私有函数及变量。
4. 35行的bb.setx()、38行的bb.x、40行的bb.gety()出现错误,因为继承方式变为保护继承后,对象无法直接访问基类中的保护函数及变量。

三、心得体会

声明派生类的一般形式为
   class 派生类名:[继承方式] 基类名{派生类新增加的成员};
继承方式包括: public (公用的),private (私有的)和protected(受保护的),如果不写,则默认为private(私有的)。构造函数和析构函数是不能从基类继承的。 不同的继承方式决定了基类成员在派生类中的访问属性。
通过实验我们熟悉了派生类的定义方法和派生类构造函数的定义方法,明白了在不同继承方式的情况下,基类成员在派生类中的访问权限。


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值