public继承保持基类成员访问权限,protected继承将public和protected成员变为protected,private继承均使其变为private,基类private成员均不可直接访问。

在C++中,继承的访问控制不仅影响基类成员在派生类中的可见性,还决定了外部代码能否访问这些成员。public、protected 和 private 继承是三种不同的继承方式,它们对基类成员的访问权限产生不同的影响。
使用 public 关键字进行继承时,基类的成员访问权限在派生类中保持不变:
这是最常用的继承方式,体现了“is-a”关系。派生类对象可以被当作基类对象使用。
示例:
立即学习“C++免费学习笔记(深入)”;
class Base {
public:
void pub() {}
protected:
void prot() {}
private:
void priv() {}
};
<p>class Derived : public Base {
// pub() 是 public
// prot() 是 protected
// priv() 不可访问
};</p>使用 protected 继承时,基类的所有 public 和 protected 成员在派生类中都变为 protected:
这种继承方式限制了外部对基类 public 成员的直接访问,适用于不希望派生类对外暴露基类接口的场景。
示例:
立即学习“C++免费学习笔记(深入)”;
class Derived : protected Base {
// pub() 变为 protected
// prot() 仍为 protected
};
// outside code cannot call d.pub()
使用 private 继承时,基类的所有 public 和 protected 成员在派生类中都变为 private:
private 继承表示“按照…实现”,而不是“是一个”。它常用于实现代码复用,但不希望暴露基类接口。此时,派生类对象不能隐式转换为基类指针或引用。
示例:
立即学习“C++免费学习笔记(深入)”;
class Derived : private Base {
// pub() 和 prot() 都变为 private
};
// Derived d; Base* p = &d; // 错误:不能隐式转换
| 继承方式 | 基类 public 成员 | 基类 protected 成员 | 基类 private 成员 |
|---|---|---|---|
| public | public | protected | 不可访问 |
| protected | protected | protected | 不可访问 |
| private | private | private | 不可访问 |
无论哪种继承方式,基类的 private 成员始终不能在派生类中直接访问。
基本上就这些。理解这三种继承方式的关键在于掌握基类成员在派生类中的访问级别变化规则,并根据设计意图选择合适的继承方式。
以上就是c++++中public, protected, private继承的区别_c++继承访问控制详解的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号