- . , , . , , (, main()), , .
, , , : , - .
.
" " - , .
++ , , .
class StaticClass {
public:
static Socket aStaticDataMember;
static void aStaticFunction() {}
}
Socket StaticClass::aStaticDataMember = Socket(...);
int main() {
StaticClass::aStaticFunction();
StaticClass::aStaticDataMember.doWhatever();
}
extern Socket globalVariable;
void globalFunction();
Socket globalVariable;
void globalFunction() {}
int main() {
globalVariable.doWhatever();
globalFunction();
}
Singleton
++, :
class SingletonClass {
public:
void doWhatever() {}
private:
friend SingletonClass &getSingletonClass() {
static SingletonClass singleton;
return singleton;
}
}
int main() {
getSingletonClass().doWhatever();
}
:
class ComponentAThatUsesASocket {
private:
Socket &socket;
public:
ComponentAThatUsesASocket(Socket &s) : socket(s) {}
void foo() {
socket.doWhatever();
}
}
int main() {
Socket socket;
ComponentAThatUsesASocket componentA(socket);
componentA.doWhatever();
ComponentB componentB(socket);
componentB.doWhatever();
}