C++ Access Specifiers

πŸ” C++ Access Specifiers

Access specifiers in C++ control where class members (data and methods) can be accessed.
They are essential for encapsulation and data security in Object-Oriented Programming.


πŸ”Ή 1. Types of Access Specifiers

C++ provides three access specifiers:

Access Specifier Accessibility
public Accessible from anywhere
private Accessible only inside the class
protected Accessible inside class and derived (child) classes

πŸ”Ή 2. public Access Specifier

Members declared as public can be accessed from outside the class.

class Student {
public:
int id;
string name;
};
int main() {
Student s;
s.id = 101; // allowed
s.name = “Amit”; // allowed
}


πŸ”Ή 3. private Access Specifier

Members declared as private are not accessible outside the class.

class Account {
private:
int balance;
public:
void setBalance(int b) {
balance = b;
}

int getBalance() {
return balance;
}
};

int main() {
Account a;
// a.balance = 5000; // ❌ error
a.setBalance(5000); // βœ” allowed
}

βœ” Most secure
βœ” Default access specifier in a class


πŸ”Ή 4. protected Access Specifier

protected members are:

  • Accessible inside the class

  • Accessible in derived classes

  • Not accessible through objects

class Parent {
protected:
int x;
};
class Child : public Parent {
public:
void setX(int val) {
x = val; // allowed
}
};


πŸ”Ή 5. Default Access Specifiers

Keyword Default Access
class private
struct public
struct Demo {
int x; // public by default
};

πŸ”Ή 6. Access Specifiers with Inheritance

class Base {
public:
int a;
protected:
int b;
private:
int c;
};
Member Accessible in Derived Class
a (public) βœ”
b (protected) βœ”
c (private) ❌

πŸ”Ή 7. Real-Life Example

class ATM {
private:
int pin;
public:
void setPin(int p) {
pin = p;
}

bool validate(int input) {
return pin == input;
}
};

βœ” User cannot directly access pin
βœ” Secure design


❌ Common Mistakes

class Test {
int x; // private by default
};
int main() {
Test t;
// t.x = 10; // ❌ error
}


πŸ“Œ Summary

  • Access specifiers control visibility

  • public β†’ accessible everywhere

  • private β†’ accessible only inside class

  • protected β†’ class + derived classes

  • Default: class β†’ private, struct β†’ public

  • Essential for encapsulation and security

You may also like...