栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实验三——类的继承

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实验三——类的继承

目录

公有继承

​​​​​​私有继承

保护继承

友元类继承

公有继承
  1. 设计类base具有public, protected, private等不同属性的成员函数或变量
class base {
public:
	int a=1;
protected:
	int b=2;
private:
	int c=3;
};

2.使用public继承base类,子函数在使用public继承base类时,子函数内部可以访问到protected部分,外部只能访问到public部分(在公有继承中,基类的公有成员和保护成员可被访问且访问属性不变,而私有成员不可以直接访问)

class Pub_base :public base {
public:
	void Test() {
		a = 1;
		b = 2;	
		
	}
	int pub_b1 = 4;

private:
	int pub_b2 = 10;
protected:
	int pub_b3 = 20;
};
结果展示:

说明:Pub_base在public继承base类时,只能继承base的public部分及自己定义的public成员

私有继承 概念:当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,而基类的私有成员不可直接访问
class Pri_base :private base {
public:
	void test() {
		a = 1;
		b = 2;
		
	}
	int pri_b1 = 6;
protected:
	int pri_b2 = 7;
private:
	int pri_b3 = 8;
};
结果展示:

 结果说明:在私有继承中,基类的公有和保护乘员被继承后都作为派生派的私有成员,派生派的其他成员可以直接访问他们,但是在类族外部通过派生派的对象无法直接访问他们。

保护继承 概念:保护继承中,基类的公有和保护成员都以保护成员的身份出现在派生类中,而基类的私有成员不可直接访问。
class Pro_base :protected base {
	public:
		void test() {
			 a = 1;
			b = 2;
			
		}
		int pro_b1 = 11;
protected:
	int pro_b2 = 21;
private:
	int pro_b3 = 22;
};
结果展示:

 结果说明:以protected方式继承的外部不能访问到public成员,只能访问到自己定义的public成员

3.B以private方式继承A,尝试把A中的部分public成员提升到public

class NewPrivate_base :private base{
public:
	void test() {
		a = 67;
		b = 76;
	}
	int pri_b1 = 100;
	using base::a;  
protected:
	int pri_b2 = 200;
private:
	int pri_b3 = 300;
};

 结果说明:使用using后可以在main函数中访问到基类函数的public成员

友元类继承

友元函数可以访问类的私有成员,不需要类的对象去驱动

1.设计类A含有私有变量a,在类A中友元给类C

class A {
public :
	int a = 97;
protected:
	int b = 95;
private:
	int c = 92;
	friend class C;
};

2.设计类B继承A,添加私有变量b;在类C中测试访问类B的成员变量a,b

class B :public A {
private:
	int b = 94;
};


class C {
public :
	void test(){
		B b1;
		b1.a;

		A a1;
		a1.c;    
	}
};

3.设计类D继承C,在类D的成员函数中测试访问类A的成员变量a,类B的成员变量a,b

class D :public C {
public :
	void test() {
		A a1;
		a1.a;  
		
		B b1;
		b1.a;
		
	}
};
结果展示:

总结: 公有继承

如果采用公用继承,基类的公有成员和保护成员的访问属性在派生派中不变,而基类的私有成员不可直接访问

私有继承

如果采用私有继承,1.派生派可以访问保护成员。2.外部使用者无法访问保护成员

保护继承

1.受保护成员可以被派生类的成员函数引用。2.所有基类的成员都成为派生类的私有成员或不可直接访问的成员。3.如果进一步派生,基类的全部成员就无法在新的派生中被直接访问

友元类:

1.友元类不能被传递。2.友元关系是单向的,不具有交换性(若B是A的友元,A不一定是B的友元,要看是否有相应声明)3.友元关系不具有传递性

时间有点赶,所以多态性的综合运用得晚几天再学呜呜呜呜~~~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号