Visual C++ .NET/Language Basics/gcroot

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

auto gcroot

 
#include "stdafx.h"
#include <msclr/gcroot.h>
#include <msclr/auto_gcroot.h>
using namespace System;
using namespace msclr;
ref class MyClass
{
   public:
     void f()
     {
        Console::WriteLine("managed member function");
     }
     ~MyClass()
     {
        Console::WriteLine("destructor");
     }
    
};
class N
{  
   gcroot<MyClass^> r_gcroot;
   auto_gcroot<MyClass^> r_auto_gcroot;
   public:
      N()
      {
          r_gcroot = gcnew MyClass();
          r_gcroot->f();
          r_auto_gcroot = gcnew MyClass();
          r_auto_gcroot->f();
      }
      
};
int main()
{
   N n;
}


gcroot and auto gcroot

 
#include "stdafx.h"
#include <msclr/gcroot.h>
#include <msclr/auto_gcroot.h>
using namespace System;
using namespace msclr;
ref class MyClass
{
   public:
     void f()
     {
        Console::WriteLine("managed member function");
     }
     ~MyClass()
     {
        Console::WriteLine("destructor");
     }
};
int main()
{
   gcroot<MyClass^> r_gcroot;
   auto_gcroot<MyClass^> r_auto_gcroot;
   r_gcroot = gcnew MyClass();
   r_gcroot->f();
   r_auto_gcroot = gcnew MyClass();
   r_auto_gcroot->f();
}