Wie legt der Compiler Instanzen im Speicher ab?
-
Speziell würde mich interessieren: Werden die Methoden nur einmal für alle Instanzen auf den Heap geschaufelt, oder für jede Instanz? Ich hoffe doch nicht letzteres!
-
na was waere denn optimaler und machbar?
~natuerlich werden die methoden nur einmal angelegt, aber frag mich nicht, wie das bei templateklassen gemacht wird~
-
Bei Templates werden für jeden Typen die genutzten Methoden separat instanziert, auch wenn man die eventuell gleich implementieren könnte:
template <typename T> class Temp { public: void func() {} void gunc() {} }; void use() { Temp<int> a; Temp<double> b; a.func(); b.func(); a.gunc(); }ponto@burns:~> g++ -c instanz.C ponto@burns:~> nm instanz.o | c++filt 00000000 T use() 00000000 W Temp<double>::func() 00000000 W Temp<int>::func() 00000000 W Temp<int>::gunc() ponto@burns:~>Da für double gunc() nicht benutzt wurde, wird es auch nicht instanziert.