summaryrefslogtreecommitdiff
path: root/Client/ThirdParty/StaticConstructor/StaticConstructorSample/MyClass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Client/ThirdParty/StaticConstructor/StaticConstructorSample/MyClass.cpp')
-rw-r--r--Client/ThirdParty/StaticConstructor/StaticConstructorSample/MyClass.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/Client/ThirdParty/StaticConstructor/StaticConstructorSample/MyClass.cpp b/Client/ThirdParty/StaticConstructor/StaticConstructorSample/MyClass.cpp
new file mode 100644
index 0000000..3ea12a3
--- /dev/null
+++ b/Client/ThirdParty/StaticConstructor/StaticConstructorSample/MyClass.cpp
@@ -0,0 +1,43 @@
+// MyClass.cpp
+//
+#include "stdafx.h"
+#include "MyClass.h"
+
+
+// Initialization of protected static data members:
+void* MyClass::mpStaticMemory = NULL;
+const double MyClass::mPI = 3.141592;
+std::string MyClass::mStaticStr = "Init Value";
+
+
+// Invoke the StaticConstructor & StaticDestructor of the class:
+// Make sure you put this AFTER the initialization of the static data members!
+INVOKE_STATIC_CONSTRUCTOR(MyClass);
+
+
+// Default Constructor:
+MyClass::MyClass()
+{
+// PI = 5.0; // Cannot be done, as PI is const
+ mStaticStr = "Modified by Default Constructor";
+}
+
+// Destructor:
+MyClass::~MyClass()
+{
+ mStaticStr = "Modified by Default Destructor";
+}
+
+// Static Constructor:
+void MyClass::StaticConstructor()
+{
+ mStaticStr = "Modified by Static Constructor";
+ mpStaticMemory = new double[10];
+}
+
+// Static Destructor:
+void MyClass::StaticDestructor()
+{
+ delete[] mpStaticMemory;
+}
+