Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Access Modifiers in Inheritance | Inheritance Overview
C++ OOP
course content

Contenido del Curso

C++ OOP

C++ OOP

1. Fundamentals of OOP
2. Constructors and Destructors
3. Encapsulation Overview
4. Inheritance Overview
5. Polymorphism Overview

bookAccess Modifiers in Inheritance

Access modifiers in inheritance are crucial in C++ object-oriented programming. They dictate how members (attributes and methods) of a base class can be accessed by a derived class. Understanding these modifiers is essential for effective class design and for maintaining encapsulation and integrity of the data.

Access Types of Inheritance

A class can be derived from another class. The derived class inherits members from the base class, but the accessibility of these inherited members depends on both the access modifier used in the base class and the type of inheritance.

Base Class publicBase Class protectedBase Class private
public Inheritance
Public in Derived Class
Protected in Derived Class
Not Accessible
protected Inheritance
Protected in Derived Class
Protected in Derived Class
Not Accessible
private Inheritance
Private in Derived Class
Private in Derived Class
Not Accessible

This table provides a clear overview of how the access level of members from a base class changes in the derived class, depending on the type of inheritance used.

cpp

public

cpp

protected

cpp

private

copy
12345
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };

Access Control and Inheritance Conclusion

In object-oriented inheritance, base class private members are inaccessible to derived classes, safeguarding them from modification or retrieval and protected members can only be accessed within the subclass, while public members can be accessed externally. You can experiment with it using code snippet below.

cpp

main

copy
1234567891011121314151617181920
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }

Remember

Protected members, accessible within derived and subsequent derived classes, they serve as bridge between private and public elements.

Constructors and destructors are automatically invoked for derived class objects, ensuring proper resource initialization and cleanup. To access these base class elements directly, constructors and destructors must be declared public.

What determines how members of a base class can be accessed by a derived class?

What determines how members of a base class can be accessed by a derived class?

Selecciona unas respuestas correctas

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2
some-alt