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(); }