Visual C++ .NET/Development/Pointer

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Convert Between Class Pointers

<source lang="csharp">

  1. include "stdafx.h"
  2. using <mscorlib.dll>

using namespace System; class BaseClass { virtual void F(){} }; class DerivedClass : public BaseClass {}; int main(void) {

   DerivedClass* a = new DerivedClass;
   BaseClass* b = dynamic_cast<BaseClass*>(a);
   if (b != 0)
       Console::WriteLine("Conversion to base class successful.");
   else
       Console::WriteLine("Conversion to base class unsuccessful.");
   delete a;
  return 0;

}

 </source>


Convert Between Class References with dynamic_cast

<source lang="csharp">

  1. include "stdafx.h"
  2. include <typeinfo.h>
  3. using <mscorlib.dll>

using namespace System; class BaseClass { virtual void F(){} }; class DerivedClass : public BaseClass {}; int main(void) {

   DerivedClass a;
   DerivedClass& aa = a;
       BaseClass& b = dynamic_cast<BaseClass&>(aa);
       Console::WriteLine("Conversion to base class successful.");
   return 0;

}

 </source>


Convert Between Pointers and Numbers with reinterpret_cast

<source lang="csharp">

  1. include "stdafx.h"
  2. using <mscorlib.dll>

using namespace System; int main(void) {

  char* pStr = "A";
  int* pInt = reinterpret_cast<int*>(pStr);
  Console::WriteLine("As string: ");
  Console::WriteLine(pStr);
  Console::WriteLine("As integer: ");
  Console::WriteLine(*pInt);
  return 0;

}

 </source>