C++ access specifiers

Created By: chatGPT

C++ provides three primary access specifiers that control the visibility of class members. These are: public, protected, and private. Each specifier has a different level of access control. When defining a class, understanding these specifiers is crucial for encapsulation and data protection.
class Example {
    public:
        int publicVar; // Accessible from anywhere

    protected:
        int protectedVar; // Accessible in derived classes and this class only

    private:
        int privateVar; // Accessible only within this class
};

Using public access allows the members to be accessed from outside the class. This is useful when you want to provide an interface for the users of your class.

Protected members can be accessed in the class itself and by any derived classes, but not by other unrelated classes. This is handy for inheritance.

class Base {
    protected:
        int protectedVar;
};

class Derived : public Base {
    void accessBase() {
        protectedVar = 10; // Allowed
    }
};
Private members are only accessible within the class where they are declared. This is the most restrictive access level and is important for maintaining data integrity. Use private access to hide your class's implementation details and expose only what is necessary.
class Secure {
    private:
        int secretVar;
    public:
        void setSecret(int value) {
            secretVar = value; // Allowed
        }

        int getSecret() {
            return secretVar; // Allowed
        }
};

By default, class members are private if no access specifier is provided, whereas structure members are public by default. This distinction is essential for correctly designing your classes and structures in C++.

To summarize:

  • Public members are accessible from outside the class.
  • Protected members are accessible in derived classes.
  • Private members are only accessible within the class itself.
class DefaultAccess {
    int x; // private by default
};

struct DefaultStruct {
    int x; // public by default
};
Introduction And SetupVariablesData TypesIntFloatDoubleCharBoolStringVoidConstantsOperatorsArithmetic OperatorsRelational OperatorsLogical OperatorsBitwise OperatorsAssignment OperatorsTernary OperatorControl FlowIf StatementElse StatementElse If StatementSwitch StatementFor LoopWhile LoopDo While LoopBreak StatementContinue StatementGoto StatementFunctionsFunction DeclarationFunction DefinitionFunction OverloadingInline FunctionsDefault ArgumentsRecursionPass By ValuePass By ReferenceData StructuresArraysMultidimensional ArraysStructsEnumsUnionsClassesObjectsMember FunctionsConstructorsDestructorsAccess SpecifiersPublicPrivateProtectedInheritancePolymorphismFunction OverridingVirtual FunctionsPure Virtual FunctionsOperator OverloadingTemplatesNamespaceCommentsSingle Line CommentsMulti Line CommentsSyntaxSemicolonCurly BracesParenthesesEvent HandlingCinCoutError HandlingTry BlockCatch BlockThrow StatementException HandlingPreprocessor DirectivesInclude GuardsMacro DefinitionsInline AssemblyStatic KeywordsExtern KeywordsConst KeywordsVolatile KeywordsFriend FunctionStatic MemberThis PointerDynamic Memory AllocationNew OperatorDelete Operator