
Void main ()
{
//managed 1D array of int (using MC++ 2005)
Console::WriteLine("managed 1D array of int");
//int intArray __gc[]= new int __gc[5];
array<int>^ intArray = gcnew array<int>(5);
for (int i=0; i<intArray->Length; i++)
{
intArray[i] = i;
Console::Write(intArray[i]);
Console::Write("\t");
}
Console::WriteLine();
//managed 2D array of Strings (using managed type)
Console::WriteLine("managed 2D array of Strings");
// String *str2DArray[,] = new String *[2,3];
array<String^,2>^ str2DArray = gcnew array<String^,2>(2,3);
for(int row=0; row<str2DArray->GetLength(0); row++)
{
for(int col=0; col<str2DArray->GetLength(1); col++)
{
str2DArray[row,col] = (row*10 + col).ToString();
Console::Write(str2DArray[row,col]);
Console::Write("\t");
}
Console::WriteLine();
}
//unmanaged 2D array of int (for comparison)
Console::WriteLine("unmanaged 2D array of int");
int int2DArray[2][3];
for(int row=0; row<2; row++)
{
for(int col=0; col<3; col++)
{
int2DArray[row][col] = row*10 + col;
Console::Write(int2DArray[row][col]);
Console::Write("\t");
}
Console::WriteLine();
}
}
Рис. 10. Программа Array1_05
//Array2_05.cpp
#using <mscorlib.dll>
using namespace System;
Void main(void)
{
Console::WriteLine("Rectangular array using [,]");
// int rect2DArray [,] = new int __gc [3,4]; //managed
array<int,2>^ rect2DArray = gcnew array<int,2>(3,4);
for(int row=0; row< rect2DArray ->GetLength(0); row++)
{
for(int col=0; col< rect2DArray->GetLength(1); col++)
{
rect2DArray [row,col] = row*10 + col;
Console::Write(rect2DArray[row,col]);
Console::Write("\t");
}
Console::WriteLine();
}
Console::WriteLine("Array of arrays using [][]");
int arrayOfArray[3][4]; //unmanaged
for(int row=0; row<3 ; row++)
{
for(int col=0; col<4; col++)
{
arrayOfArray[row][col] = row*10 + col;
Console::Write(arrayOfArray[row][col]);
Console::Write("\t");
}
Console::WriteLine();
}
}
Рис. 11. Программа Array2_05
Реализация класса Complex
//managed версия
//Complex.h
ref class Complex{
public private:
double re;
double im;
public:
Complex(double a, double b);
Complex(const Complex %a);
void assign(const Complex %a);
void add(const Complex %a);
void print();
};
Complex %plus(const Complex %a, const Complex %b);
//Complex.cpp
#include "complex.h"
Complex::Complex(double a, double b)
{
re=a;
im=b;
}
Complex::Complex(const Complex %a)
{
re=a.re;
im=a.im;
}
void Complex::assign(const Complex %a)
{
re=a.re;
im=a.im;
}
Complex %plus(const Complex %a, const Complex %b)
{
Complex z(a.re + b.re, a.im + b.im);
return z;
}
void Complex::print()
{
System::Console::WriteLine("Re={0}; Im={1}", re, im);
}
void Complex::add(const Complex %a)
{
re=re + a.re;
im=im + a.im;
}
//main.cpp
#include "complex.h"
#using <mscorlib.dll>
int main()
{
Complex x(1.3,4.2), y(4.0,8.1), z(y);
x.add(y);
z.assign(plus(x,y));
z.print();
System::Console::ReadLine();
}
Рис. 12. Результат работы программы
ВЫВОД О ПРОДЕЛАННОЙ РАБОТЕ
Мы ознакомились с технологией создания и отладки объектно-ориентированных программ на управляемом (managed) языке С++ и получили практические навыки работы в интегрированной среде разработки приложений Visual Studio 2012.