C++ static keywords

Created By: chatGPT

In C++, the static keyword serves multiple purposes depending on the context in which it is used. It can be applied to variables, functions, and even class members. Understanding its applications is essential for writing efficient and well-organized code.
Static variables within a function are initialized only once. This means that their value is retained between function calls. This is particularly useful for keeping track of state information without needing to use global variables.
void function() {
    static int counter = 0; // Initialized only once
    counter++;
    std::cout << counter << std::endl;
}
In a class, a static member variable is shared among all instances of the class. It is not tied to a specific object, which means that it can be accessed without instantiating the class. However, it must be defined outside of the class definition.
class MyClass {
public:
    static int staticVar;
};

int MyClass::staticVar = 0;

// Accessing static variable:
MyClass::staticVar = 5;
Static member functions can only access the static members of the class and not instance members. This is because they do not have a this pointer, meaning they are not associated with any particular object of the class.
class MyClass {
public:
    static void staticFunction() {
        std::cout << "Static function called.";
    }
};

MyClass::staticFunction();
As for static global variables or functions, these are limited in scope to the file in which they are declared. This helps in preventing name clashes in larger projects by limiting visibility.
static int localCounter = 0; // Only accessible within this file

static void localFunction() {
    // This function is restricted to the file scope
}
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