Visual C++ .NET/Class/Constructor

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

Adding Constructors

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; ref class ParentClass{ public:

   ParentClass() : PVal(10) {}
   ParentClass(int inVal) : PVal(inVal) {}
   ParentClass(const ParentClass %p) : PVal(p.PVal) {}
   int PVal;

}; ref class ChildClass : public ParentClass{ public:

   ChildClass () : CVal(20) {};    // default constructor
   ChildClass (int inVal1, int inVal2) : ParentClass(inVal1), CVal(inVal2) {}
   ChildClass(const ChildClass %vals) : ParentClass(vals.PVal), CVal(vals.CVal) {}
   int CVal;

}; void main() {

   ParentClass p1(4);    
   ParentClass p2 = p1;  // Copy Constructor
   p1.PVal = 2;          
   Console::WriteLine("p1.PVal=[{0}] p2.PVal=[{1}]", p1.PVal, p2.PVal);

}

 </source>


Constructor inheritance

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; ref class MyBase{

   int data;
 public:
   MyBase() { Console::WriteLine("MyBase::MyBase()"); }
   MyBase(int data_in) : data(data_in) { Console::WriteLine("MyBase::MyBase(int)"); }

}; ref class Derived : MyBase {

  public:
    Derived(int data) : MyBase(data)
    { Console::WriteLine("Derived::Derived(int)"); }

}; int main() {

   MyBase b;
   Derived d(100);

}

 </source>


Constructor order

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; class MyClass {

  public:
  MyClass()
  {
     Console::WriteLine("MyClass: Field constructor.");
  }

}; ref class MyClass2 {

  public:
  MyClass2()
  {
      Console::WriteLine("MyClass2: Field constructor.");
  }

}; class MyBaseClass {

  public:
    MyBaseClass()
    {
       Console::WriteLine("MyBaseClass: Base class constructor.");
    }

}; class NativeDerived : MyBaseClass {

  MyClass field;
  public:
    NativeDerived() : field()
    {
        Console::WriteLine("Native: Derived class constructor.");
    }

}; ref class ManagedBase {

  public:
    ManagedBase()
    {
       Console::WriteLine("ManagedBase: Base class constructor.");
    }

}; ref class ManagedDerived : ManagedBase {

  MyClass2 field;
  public:
    ManagedDerived() : field()
    {
        Console::WriteLine("ManagedDerived: Derived class constructor.");
    }

}; int main() {

  NativeDerived nd;
  ManagedDerived md;

}

 </source>


public constructor

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; ref class MyClass {

  public:
  literal String^ name = "Bob";
  MyClass()
  {
      Console::WriteLine(name);
  }
  void Print()
  {
      Console::WriteLine(name);
  }

}; int main() {

  MyClass^ c = gcnew MyClass();
  c->Print();
  Console::WriteLine( MyClass::name );

}

 </source>