Static variables and functions
static variables and functions
static variables
Initialised at the beginning of the program, before the main function
is called. Stored in the data section of the program if initialised or
bss if not. Basically shares a location with a global variable.
It cannot be used as a global var. I expected it to work with extern in
another function, mostly main, but it didn't. Hence it can only be
used by the function in the same scope.
Static variables of classes don't have such restrictions and can be used anywhere.
Static is only meant for file linking, for global static to be used in
another file use extern.
static functions
Static functions once again follow the same file level linking that
variables follow. More precisely, it is available to the same
translation unit. So if a file A.cpp has an include B.cpp and
B.hpp then the files will be added.
static methods
These are methods that do not need the existence of an object to be
called. They can be called from the class itself, as Graph::BST().
There are some limitations of static methods includes the fact that you
cant use the this pointer inside the method.
#include <iostream>
class init {
public:
init();
static void printo() { std::cout << "hello" << '\n'; }
~init();
private:
int x;
};
int main() { init::printo(); }
