原文:
通过在类的内部使用using声明语句 , 我们可以
将该类的直接或间接基类中的任何可访问成员标记出来 (只限于非私有成员)
。using声明语句中名字的访问权限由该using声明语句之前的访问说明符来决定。
例子:
//.h
class Base
{
public:
int base_public = 1;
void func1();
protected:
int base_protect = 2;
void func2();
private:
int base_private = 3;
void func3();
};
class Derive1 :private Base //私有继承
{
public:
//在public作用域声明基类中的成员
using Base::base_public; //成功,基类公有->派生类公有
using Base::func1; //成功,基类公有->派生类公有
using Base::func2; //成功,基类保护->派生类公有
protected:
using Base::base_protect; //成功,基类保护->派生类保护
using Base::func3; //错误,基类私有->派生类保护;编译器报错 , 不可访问
private:
using Base::base_private; // 错误, 基类私有->派生类私有;编译器报错 , 不可访问
};
参考资料:
1、C++ Primer5 P546
2、
C++(继承):14—使用using声明增加类的可访问性
3、
通过using声明改变个别成员的可访问性
总结:
1、在派生类中利用using声明可以改变基类
除私有成员外
其他成员的访问权限。
2、改变后该成员在派生类的访问权限由using位于的派生类访问说明符确定。
版权声明:本文为qq_33726635原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。