欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > C++系列-继承方式

C++系列-继承方式

2024/11/30 6:51:05 来源:https://blog.csdn.net/weixin_48668114/article/details/132948518  浏览:    关键词:C++系列-继承方式

继承方式

  • 继承的语法
  • 继承方式:
    • 继承方式的特点
    • 继承方式的举例

  • 继承可以减少重复的代码。
  • 继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。
  • 基类=父类,派生类=子类,派生类是在继承了基类的部分成员基础上,加上自己的成员而产生的类。

继承的语法

class 子类名 : 继承方式 父类名1 , 继承方式 父类名2 , ..... 
{派生类的成员
};

继承方式:

  • public
  • protected
  • private

继承方式的特点

  • 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
  • public继承中,父类中public和protected权限到子类中不变。
  • protected继承中,父类中的public和protected权限到子类中变为protected。
  • private继承中,父类中的public和protected权限到子类中变为private。
    在这里插入图片描述

继承方式的举例

  • public继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son : public Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555;		// 父类中的私有成员到子类中无法访问}};void test01(){Son s1;s1.m_public_a = 3;// s1.m_protected_a = 333;		//父类中的protected权限的成员到子类中仍是protected, 在类中可以访问,类外不行s1.show_info_1();}void main(){	test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55
  • protected继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son: protected Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555;		// 父类中的私有成员到子类中无法访问}};void test01(){Son s1;//s1.m_public_a = 3;			// 父类中的public权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行// s1.m_protected_a = 333;		// 父类中的protected权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行s1.show_info_1();}void main(){	test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55

  • private继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son: private Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555;		// 父类中的私有成员到子类中无法访问}};class Grandson: public Son{public:void show_info_1(){//m_public_a = 5;			// 在Son类中,因为是以private方式继承,原Father中的public和protected权限的成员都变成了private,所以当Grandson再使用public方式继承时,无法访问。//m_protected_a = 55;//cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;}};void test01(){Son s1;//s1.m_public_a = 3;			// 父类中的public权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行//s1.m_protected_a = 333;		// 父类中的protected权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行s1.show_info_1();}void main(){	test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com