Visual C++ .NET/Class/Inheritance
Call a Base Method
<source lang="csharp">
- include "stdafx.h"
- using <mscorlib.dll>
using namespace System; class Base { public:
virtual ~Base() { Console::WriteLine("Base cleanup"); };
}; class Derived : public Base { public:
virtual ~Derived() { Console::WriteLine("Derived cleanup"); };
}; int main(void) {
Derived instance; return 0;
}
</source>
Derive a Class
<source lang="csharp">
- include "stdafx.h"
- using <mscorlib.dll>
using namespace System; class BaseClass { public:
virtual void MyFunction() { Console::WriteLine("Inside Base class"); }
}; class DerivedClass : public BaseClass { public:
virtual void MyFunction() { Console::WriteLine("Inside Derived class"); }
}; void main() {
BaseClass base; DerivedClass derived; base.MyFunction(); derived.MyFunction();
}
</source>
Finalizers and inheritance
<source lang="csharp">
- include "stdafx.h"
using namespace System; ref class Base {
public: Base() { } ~Base() { Console::WriteLine("~Base"); this->!Base(); } !Base() { Console::WriteLine("!Base"); }
}; ref class Derived : Base {
public: Derived() { } ~Derived() { Console::WriteLine("~Derived"); this->!Derived(); } !Derived() { Console::WriteLine("!Derived"); }
}; void F() {
Derived d;
} void G() {
Derived^ dh = gcnew Derived();
} int main() {
F(); G(); Console::WriteLine("Collecting after G()"); GC::Collect();
}
</source>
Inherit a class
<source lang="csharp">
- include "stdafx.h"
using namespace System; ref class Square{ public:
int Area(){ return Dims * Dims; } int Dims;
}; ref class Cube : public Square{ public:
int Volume(){ return Area() * Dims; }
}; void main() {
Cube ^cube = gcnew Cube(); cube->Dims = 3; Console::WriteLine(cube->Dims); Console::WriteLine(cube->Area()); Console::WriteLine(cube->Volume());
}
</source>