Documente Academic
Documente Profesional
Documente Cultură
C++ Addendum:
Static Members in C++
Static Members
Memory Allocators
Implementation of Singleton Classes
Comparison of Static and Friend
Functions
oop
Static Members
vs. Ordinary Members
Static Members
Ordinary Members
Data
Members
Exactly one
instantiation for
the entire class
One instantiation
for each object in
the class
Function
Members
oop
FODVV:LQGRZ^
VWDWLF:LQGRZ
DOO
:LQGRZ
Q[W
3RLQWZKHUH
3RLQWVL]H
SXEOLF
VWDWLF:LQGRZ
KHDGYRLG^UHWXUQDOO`
:LQGRZ
QH[WYRLG^UHWXUQ
Q[W`
YRLGGLVSOD\YRLG
:LQGRZ
Q[WDOO
^
DOO
:LQGRZ%
:LQGRZ$
DOO WKLV
`
`
:LQGRZ
:LQGRZDOO :LQGRZ
Recall: statics (globals) are
automatically zero-initialized
oop
oop
IRU
:LQGRZ
S :LQGRZKHDG
S :LQGRZ
S S!QH[W
S!GLVSOD\
i-1
oop
Static
SRRO
CHUNK-1
`
oop
BUG:
BUG:the
thechunks
chunkswill
will
never
neverbe
bedeleted
deleted
oop
FODVV1RGH^
HQXP^&+81. `
VWDWLF1RGH
SRRO
VWDWLF1RGH
1HZYRLG
VWDWLFYRLG'HOHWH1RGH
Q^
Q!OHIW SRRO
SRRO Q
`
SRRO
1RGH
1RGH
'DWDGDWD
.H\NH\
1RGH
OHIW
1RGH
ULJKW
1RGH'DWDG.H\N/HIWO5LJKWU
GDWDGNH\NOHIWOULJKWU^`
IULHQGFODVV%LQDU\7UHH
`
oop
QHZ
GHOHWH
QHZ>@
GHOHWH>@
1RGHRSHUDWRUGHOHWH
1RGH
11
12
Ensure
Ensurethat
thatexactly
exactlyone
oneinstance
instanceisisdeclared,
declared,and
and
avoid
avoidthe
thedependency
dependencyof
ofinitialization
initializationorder.
order.
6LQJOHWRQ
6LQJOHWRQ,QVWDQFH
6LQJOHWRQ
6LQJOHWRQ,QVWDQFH
^^
VWDWLF6LQJOHWRQLQVWDQFH
VWDWLF6LQJOHWRQLQVWDQFH
UHWXUQ LQVWDQFH
Can you propose another idiom for
UHWXUQ LQVWDQFH
implementing singleton classes in
``
which the singleton object is
FODVV)RR^
SXEOLF
YRLG
RSHUDWRUQHZ>@VL]HBWE\WHV
YRLGRSHUDWRUGHOHWH>@YRLG
EXIIVL]HBWE\WHV
`
oop
RSHUDWRUQHZVL]HBW
RSHUDWRUGHOHWHYRLG
oop
FODVV)RR^
SXEOLF
YRLG
RSHUDWRUQHZVL]HBWE\WHV
YRLGRSHUDWRUGHOHWHYRLG
EXIIVL]HBWE\WHV
`
1RGHRSHUDWRUQHZ
10
oop
oop
13
oop