Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

public
private
protected

What are access specifiers for members in C++?

Educative Answers Team
svg viewer

An access specifier is used to implement the principle of information hiding. This principle states that irrelevant and sensitive information should be kept hidden, as much as possible, outside of a class.

The three access specifiers in C++, in ascending order of accessibility, are:

1. private

All private variables and functions can only be accessed from inside the class or friend class. When no specifier is written, the members in a class are considered private by default.

class A{
private:
    int x;
    void foo(){
        cout << "foo() executes";
        
        // Increment private variable x from inside class:
        x++;
    }
};

int main(){
    A obj;

    // Executing private function foo() gives error:
    obj.foo();
}

2. protected

The protected members of a class are only accessible within that class and its child classes.

3. public

public members can be accessed from anywhere outside the class. They provide an interface for interacting with an object of the class. A common example is a constructor that is declared public so that an object of that class can be created.

class A{
private:
    int x;
protected:
    void foo(){
        cout << "foo() executes";
        
        // Increment private variable x from inside class:
        x++;
    }
};

class B: public A{
public:
    B(){
        // Execute foo() from inside a child class:
        foo();
    }
};

int main(){
    A obj;

    // Executing protected function foo() gives error:
    obj.foo();

    // Public constructor calls foo():
    B obj;
}

RELATED TAGS

public
private
protected
Copyright ©2022 Educative, Inc. All rights reserved
RELATED COURSES

View all Courses

Keep Exploring