Иллюстрированный самоучитель по Visual Studio .NET

Введение

Управляемые расширения для C++

Так называется множество расширений языка C++. Они были введены с целью помочь разрабатывать приложения, ориентированные на платформу Microsoft .Net. Традиционный (unmanaged) код C++ и управляемый код (managed) могут одновременно присутствовать в одном приложении, не мешая друг другу. Для того чтобы получить быстрое представление об этой технологии, рассмотрим пример.

Вы начинаете со стартовой заготовки Visual C++ Projects, скроенной по шаблону Managed C++ Application, задав имя проекту (например, Man), и получаете два СРР-файла: Man.срр и Assemblylnfo.cpp. Первый файл представляет собой заготовку вашей программы консольного типа:

//=== Импортирует метаданные в программу, использующую
//=== Managed Extensions for C++
#using <mscorlib.dll>
// Стало доступным пространство имен System, которое
// содержит описания фундаментальных классов, атрибутов,
// интерфейсов и событий
using namespace System;
int main (void)
{
// Console – это класс, который обеспечивает стандартные
// операции ввода-вывода в окно консольного типа
Console::WriteLine("Hello World");
return 0;
}

Второй файл содержит атрибуты настройки сборочной информации (assembly metadata). Коды этого файла нет смысла рассматривать, так как они носят сугубо служебный характер. Вы можете запустить программу на выполнение (CTRL + F5) и увидеть традиционное приветствие в окне консольного типа. Теперь покажем, как можно создать управляемый динамический массив. Вставьте директиву finclude <stdlib.h> и отредактируйте код главной функции:

void main()
{
// Описатель _gс декларирует garbage-collected object,
// то есть объект, за памятью которого будет следить CLR
int managed _gc[] = new int _gc[rand()%100 + 1);
//==== Обычный динамический массив
int *unmanaged = new int[rand()%100 + 1];
//==== Мы можем задавать вопросы объекту managed
Console::WriteLine (managed › Count);
Console::WriteLine (managed › Rank);
//==== Мы не можем задавать вопросы объекту unmanaged
}

Запустите проект и убедитесь в том, что в окне выведены два числа, 42 и 1. Первое число является случайно выбранным размером массива (managed), а второе – рангом массива, то есть его размерностью (одномерный массив). Для того чтобы чуть-чуть глубже проникнуть в тайны управляемого кода и данных, дополните тестовую программу кодами нового управляемого класса Man. Вставьте следующие коды до функции main.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.