Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.17 Mб
Скачать

Пример 4.5.4. Создание массивов объектов на языке Java.

// Java и J#

Import java.Io.*;

class CFl

{

private float fl; // Закрытая переменная с плавающей точкой

public void Set(float vFI) {fl= vFI;}

public float Get() {return fl;}

}

public class Test

{

public static void main(String[] args)

{

// Создать массив объектов в управляемой куче

CFl [] m1; // Создать массив (управляемых) ссылок на объекты

m1= new CFl [2];

// Создать объекты в (управляемой) куче

m1[0]= new CFl (); m1[1]= new CFl ();

// Установить значения переменной fl объектов массива

m1 [0].Set (1.1F); m1 [1].Set (1.2F);

// Вывести значения переменной fl объектов массива

System.out.print ("ml [0].fl= " + m1[0].Get ());

System.out.println (" ml [l].fl= " + m1[1].Get ());

// Создать массив объектов с его инициализацией

// Создать первый объект в (управляемой) куче

CFl m2_l= new CFl ( ); m2_l.Set (2.1F);

// Создать второй объект в (управляемой) куче

CFl m2_2= new CFl ( ); m2_2.Set (2.2F);

// Создать и инициализировать массив объектов

CFl [] m2= {m2_l, m2_2};

// Вывести значения переменной fl объектов массива

System.out.print ("m2 [0].fl= " + m2 [0].Get ( ));

System.out.print (" m2 [l].fl= " + m2 [1].Get ());

}

}

Результат:

ml [0].fl= 1.1 ml [l].fl= 1.2

m2 [0].fl= 2.1 m2 [l].fl= 2.2

В примере 4.5.4 вначале создаётся массив ml ссылок к двум объектам типа CFl, с каждой из которых затем связывается отдельно созданный с помощью оператора new объект, размещённый в куче. Затем переменной каждого объекта функция Set() присваивает значение, а функция Get() выводит присвоенное значение на консоль.

Массив m2 создан иначе. Вначале создаются объекты m2_l и m2_l типа CFl в куче, а потом они инициализируются в массив m2.

4.6Объявления структур и перечислений

В отличие от языка С при объявлении переменных типа структура и перечисление в языках C++/CL1 и C# не надо использовать ключевые слова struct и enum. В языке Java структуры отсутствуют.

Пример 4.6.1. Описание структур в языках C++/CLI и C#.

// C++/CLI

#include "stdafx.h"

using namespace System;

struct studentl // Описание неуправляемой структуры studentl

{

char name [20];

int birth;

};

value struct student2 // Описание структуры student2 типа значения

{

array<char> ^name;

int birth;

};

ref struct student3 // Описание управляемой структуры student3

{

array<char> ^name;

int birth;

};

int main(array<System::String ^> ^args)

{

studentl ourStudentl; // Объявление переменной типа studentl (в стеке).

student2 ourStudent2; // Объявление переменной типа student2 (в стеке).

student3 ^ourStudent; // Объявление переменной типа student3 (в куче).

ourStudent= gcnew student3;

return 0;

}

/ / C #

struct student // Описание структуры student

{

public char [] name;

public int birth;

}

student ourStudent; /* Объявление переменной типа student

4.7Ссылки

Ссылки - новый тип неуправляемых данных в языке C++/CLI, отсутствующий в языке С. Ссылка позволяет определить альтернативное имя переменной.

Объявление ссылки:

тип & идентификатор2 = идентификатор1;

Это объявление назначает переменной идентификатор1 второе имя идентификатор2. Следует отличать это понятие ссылки языка C++/CLI от понятия ссылки на объект и интерфейсной ссыпки в языках C# и Java.