在C++中,当我们谈论类的继承时,有三种基本的继承修饰符:public、protected和private。这些修饰符决定了基类(父类)中的成员在派生类(子类)中的访问级别。以下是这三种继承修饰符的总结:
![图片[1]_C++中三种继承修饰符:public、protected、private的深入解析_知途无界](https://zhituwujie.com/wp-content/uploads/2024/05/d2b5ca33bd20240529122848.png)
1. public 继承
- 当使用
public继承时,基类的public和protected成员在派生类中保持其原有的访问级别。 - 基类的
public成员在派生类中仍然是public的。 - 基类的
protected成员在派生类中仍然是protected的。 - 基类的
private成员在派生类中是不可访问的。
示例:
class Base {
public:
void pubFunc() {}
protected:
void protFunc() {}
private:
void privFunc() {}
};
class Derived : public Base {
public:
void someFunc() {
pubFunc(); // 可以访问
protFunc(); // 可以访问
// privFunc(); // 错误,不可访问
}
};
2. protected 继承
- 当使用
protected继承时,基类的public和protected成员在派生类中变为protected。 - 基类的
public成员在派生类中变为protected。 - 基类的
protected成员在派生类中仍然是protected的。 - 基类的
private成员在派生类中仍然是不可访问的。
示例:
class Base {
public:
void pubFunc() {}
protected:
void protFunc() {}
private:
void privFunc() {}
};
class Derived : protected Base {
public:
void someFunc() {
pubFunc(); // 可以访问,但在Derived外部不可访问
protFunc(); // 可以访问,但在Derived外部不可访问
// privFunc(); // 错误,不可访问
}
};
3. private 继承
- 当使用
private继承时,基类的所有成员(public、protected和private)在派生类中变为private。 - 这意味着这些成员在派生类内部是可访问的,但在派生类外部是不可访问的。
- 这是一种比较少见的用法,因为它严格限制了基类成员的访问权限。
示例:
class Base {
public:
void pubFunc() {}
protected:
void protFunc() {}
private:
void privFunc() {}
};
class Derived : private Base {
public:
void someFunc() {
pubFunc(); // 可以访问,但在Derived外部不可访问
protFunc(); // 可以访问,但在Derived外部不可访问
// privFunc(); // 错误,不可访问
}
};
在实际编程中,public继承是最常见的,因为它保留了基类成员的访问级别,使得派生类可以像基类一样使用这些成员。而protected和private继承则用于特定的场景,例如当需要隐藏基类的实现细节或限制对基类成员的访问时。
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END

























暂无评论内容