add pure virtual

add interfaces like classes
add template example
This commit is contained in:
2025-02-12 13:03:15 +01:00
parent 4c7ee6f3a6
commit dc3cfc8fa3
9 changed files with 104 additions and 4 deletions
+37 -2
View File
@@ -3,6 +3,7 @@
#include <memory>
#include "functions.h"
#include "ClassA.h"
#include "ClassB.h"
int number = 0;
@@ -115,8 +116,42 @@ int main()
//cout << "sn2 refs: " << sn2.use_count() << endl;
ClassA classA;
ClassA classA2 = classA;
//ClassA classA;
//ClassA classA2 = classA;
//ClassB classB;
//int number = classA.GetNumber();
//cout << number << endl;
//classB.GetNumber();
//IComparable* pComparable = nullptr;
//pComparable = new ClassB();
////ClassB* pClassB2 = (ClassB*)pComparable; // C-Cast, CAUTION: DANGER!!!
//ClassB* pClassB2 = dynamic_cast<ClassB*>(pComparable); // C++ polymorph cast
//float f = 1.0f;
//int i = static_cast<int>(f); // explicit c++ cast between two static data types
////int* pNonsense = reinterpret_cast<int*>(pComparable); // c++ cast like C-Cast
//const char csz[13] = "Hello World";
//char* sz = const_cast<char*>(csz);
// What's the difference?
//const int* cip;
//int const* icp;
//int* const ipc;
//const int* const cipc;
//int const* const icpc;
//const int const* const cicpc;
IComparable* pComparable = nullptr;
IComparable* pComparable2 = new ClassA();
pComparable = new ClassB();
(*pComparable).Compare(pComparable2);
pComparable->Compare(pComparable2); // identical to line above, but simpler
delete pComparable;
pComparable = nullptr;
//delete pComparable2;
//pComparable2 = nullptr;
safeDelete(pComparable2);
return 0;
}