继承(访问权限)-----c++对c的扩充(11)

在这里插入图片描述

以下例子都基于上面的图片:

私有继承:

# include <iostream>
using namespace std;
class human {
public:
	human();
	void get_();
	void display_();
private:
	string name;
	string sex;
	double age;
protected:
	double hight;

};
human::human() {
	name = "\0";
	sex = "\0";
	age = 0;
	hight = 0;
}
void human::get_() {
	cin >> name >> sex >> age;
	age += 1;//可以使用子类的成员函数来调用该函数从而实现改变父类私有变量。
}
void human::display_() {
	cout << name << "    " << sex << "    " << age << endl;
}
//私有继承
class student :private human {
public:
	student();
	void get__();
	void display__();
private:
	int id;
	int class_;
};
student::student() {
	id = 0;
	class_ = 0;	
}
void student::get__() {
    age += 1;//  错误   由于是基类中的私有成员变量,
   			 //私有继承之后,依旧是基类的私有成员变量,派生类是不可访问的
	hight += 1;//  正确  在基类中是protected 通过私有继承变为派生类的私有变量,
			  //在该类中依旧可以被调用
	get_();  //正确  在基类中是公共成员函数,在派生类中作为私有成员函数,依旧可以被访问
	cin >> id >> class_;

}
void student::display__() {
	display_();//私有继承子类依旧可调用父类的公有函数(该公有函数相当于是该子类的私有函数)
	cout << id << "   " << class_ << endl;
}
int main() {
	student st;
	st.get__();
	st.display__();
	age = age + 1;  //错误 基类中的私有变量,同理不可访问
	hight += 1;  //错误,在基类中为保护权限,通过私有继承之后变为,私有权限,在派生类外是不可访问的
	st.display_();//错误   在基类中是公有成员函数,但由于是私有继承,变为派生类的私有成员函数,则在派生类外是不可调用
	
	return 0;
}

公共继承和保护继承的代码可以自己下去敲一敲,我这里就放上私有继承的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值