Skip to content

Latest commit

 

History

History
100 lines (75 loc) · 3.01 KB

File metadata and controls

100 lines (75 loc) · 3.01 KB

C++ 编程中的公共,受保护和私有继承

原文: https://www.programiz.com/cpp-programming/public-protected-private-inheritance

在本文中,您将学习在 C++ 中使用公共,保护和私有继承。 您将通过示例学习在何处以及如何使用它。

您可以从具有不同访问控制的基类中声明派生的,即公共继承,受保护的继承或私有继承。

#include <iostream>
using namespace std;

class base
{
.... ... ....
};

class derived : access_specifier base
{
.... ... ....
};

注意:可以使用publicprotectedprivate关键字代替上述中使用的access_specifier术语。

C++ 中的公共继承,保护继承和私有继承的示例

class base 
{
	public:
		int x;
	protected:
		int y;
	private:
		int z;
};

class publicDerived: public base
{
	// x is public
	// y is protected
	// z is not accessible from publicDerived
};

class protectedDerived: protected base
{
	// x is protected
	// y is protected
	// z is not accessible from protectedDerived
};

class privateDerived: private base
{
	// x is private
	// y is private
	// z is not accessible from privateDerived
}

在上面的示例中,我们观察到以下内容:

  • base具有三个成员变量:xyz,它们分别是publicprotectedprivate成员。
  • publicDerived继承了变量xy为公共变量和受保护变量。z不是继承的,因为它是base的私有成员变量。
  • protectedDerived继承变量xy。 这两个变量都被保护。z不继承 如果我们从protectedDerived派生一个类derivedFromProtectedDerived,则变量xy也将继承到派生类。
  • privateDerived继承变量xy。 这两个变量都变为私有。z不继承 如果我们从privateDerived派生类derivedFromPrivateDerived,则变量xy不被继承,因为它们是privateDerived的私有变量。

公共继承中的可见性

访问性 私有变量 受保护变量 公共变量
可从自己的类访问?
可从派生类访问?
可从二阶派生类访问?

受保护继承中的可见性

访问性 私有变量 受保护变量 公共变量
可从自己的类访问?
可从派生类访问? 是(继承为受保护的变量)
可从二阶派生类访问?

私有继承中的可见性

访问性 私有变量 受保护变量 公共变量
可从自己的类访问?
可从派生类访问? 是(继承为私有变量) 是(继承为私有变量)
可从二阶派生类访问?