Public, Protected, and Private
beginner
c++11
classes
C++ has three levels of access modifiers for classes: public
, protected
, and private
.
public
means any code can access the field or method, while private
means only the class itself can access those fields.
protected
is in between, code outside the class cannot access protected
fields but the class itself and subclasses can access protected
fields.
By default, class
members are private
, and struct
members are public
.
Here’s an example:
#include <string> #include <iostream> class Person { public: explicit Person(int age) : age(age) { } void happy_birthday() { age += 1; std::cout << "It's " << nickname << "'s birthday.\n"; std::cout << "You're " << age << ". Have anything to say?\n"; std::cout << "\"" << catchphrase << "\"\n"; } std::string nickname; protected: std::string catchphrase = "Once more around the Sun."; private: int age = 25; }; class HappyPerson : public Person { public: explicit HappyPerson(int age) : Person(age) { catchphrase = "I'm just glad to be here."; } }; int main() { Person p(25); p.nickname = "Johnny"; p.happy_birthday(); std::cout << "\n"; HappyPerson hp(20); hp.nickname = "Happy Gal"; hp.happy_birthday(); }
It's Johnny's birthday. You're 26. Have anything to say? "Once more around the Sun." It's Happy Gal's birthday. You're 21. Have anything to say? "I'm just glad to be here."