- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

Краткое описание каждого из этих ключевых слов приведено в следующих разделах.



_ _abstract

Ключевое слово _ _abstract используется в сочетании со словом _ _gc при определении абстрактного управляемого класса. Объект _ _abstract-класса создать нельзя. Для класса, определенного с использованием ключевого слова _ _abstract, необязательно включение в него чисто виртуальной функции.

_ _box

Ключевое слов _ _box заключает в специальную оболочку значение внутри объекта. Такая "упаковка" позволяет использовать тип этого значения в коде, который требует, чтобы данный объект был выведен из класса System::Object, базового класса для всех .NET-объектов.

_ _delegate

Ключевое слово _ _delegate определяет объект-делегат, который инкапсулирует указатель на функцию внутри управляемого класса (т.е. класса, модифицированного ключевым словом _ _gc).

_ _event

Ключевое слово _ _event определяет функцию, которая представляет некоторое событие. Для такой функции задается только прототип.

_ _finally

Ключевое слово _ _finally — это дополнение к стандартному С++-механизму обработки исключительных ситуаций. Оно используется для определения блока кода, который должен выполняться после выхода из блоков try/catch. При этом не имеет значения, какие условия приводят к завершению try/catch-блока. Блок _ _finally должен быть выполнен в любом случае.

_ _gc

Ключевое слово _ _gc определяет управляемый класс. Обозначение "gc" представляет собой сокращение от словосочетания "garbage collection" (т.е. "сборка мусора") и означает, что объекты этого класса автоматически подвергаются процессу утилизации памяти, освобождаемой во время работы программы, когда они больше не нужны. В объекте отпадает необходимость в случае, когда на него не существует ни одной ссылки. Объекты _ _gc-класса должны создаваться с помощью оператора new. Массивы, указатели и интерфейсы также можно определять с использованием ключевого слова _ _gc.

_ _identifier

Ключевое слово _ _identifier позволяет любому другому ключевому слову языка C++ использоваться в качестве идентификатора. Эта возможность не предназначена для широкого применения и введена для решения специальных задач.

_ _interface

Ключевое слово _ _interface определяет класс, который должен действовать как интерфейс. В любом интерфейсе ни одна из функций не должна включать тело, т.е. все функции интерфейса являются неявно заданными чисто виртуальными функциями. Таким образом, интерфейс представляет собой абстрактный класс, в котором не реализована ни одна из его функций.

_ _nogc

Ключевое слово _ _nogc определяет неуправляемый класс. Поскольку такой (неуправляемый) тип класса создается по умолчанию, ключевое слово _ _nogc используется редко.

_ _pin

Ключевое слово _ _pin используется для определения указателя, который фиксирует местоположение в памяти объекта, на который он указывает. Таким образом, "закрепленный" объект не будет перемещаться в памяти в процессе сборки мусора. Как следствие, сборщик мусора не в состоянии сделать недействительным указатель, модифицированный с помощью ключевого слова _ _pin.

_ _property

Ключевое слово _ _property определяет свойство, являющееся функцией-членом, которая позволяет установить или получить значение некоторой переменной (члена данных класса). Свойства предоставляют удобное средство управления доступом к закрытым (private) или защищенным (protected) данным.

_ _sealed

Ключевое слово _ _sealed предохраняет модифицируемый им класс от наследования другими классами. Это ключевое слово можно также использовать для информирования о том, что виртуальная функция не может быть переопределена.

_ _try_cast

С помощью ключевого слова _ _try_cast можно попытаться преобразовать тип выражения. Если предпринятая попытка окажется неудачной, будет сгенерировано исключение типа System::InvalidCastException.

_ _typeof

Ключевое слово _ _typeof позволяет получить объект, который инкапсулирует информацию о данном типе. Этот объект представляет собой экземпляр класса System::Туре.

_ _value

Ключевое слово _ _value определяет класс, который представляет собой обозначение типа. Любое обозначение типа содержит собственные значения. И этим тип _ _value отличается от типа _ _gc, который должен выделять память для объекта с помощью оператора new. Обозначения типа, не представляют интерес для "сборщика мусора".

Расширения препроцессора

Для поддержки .NET-среды компания Microsoft определяет директиву препроцессора #using, которая используется для импортирования метаданных в программу. Метаданные содержат информацию о типе и членах класса в форме, которая не зависит от конкретного языка программирования. Таким образом, метаданные обеспечивают поддержку смешанного использования языков программирования. Все управляемые С++-программы должны импортировать библиотеку <mscorlib.dll>, которая содержит необходимые метаданные для оболочки .NET Framework.

Компания Microsoft определяет две pragma-инструкции (используемые с директивой препроцессора #pragma), которые имеют отношение к оболочке .NET Framework. Первая (managed) определяет управляемый код. Вторая (unmanaged) определяет неуправляемый (собственный, т.е. присущий данной среде) код. Эти инструкции могут быть использованы внутри программы для селективного создания управляемого и неуправляемого кода.

Атрибут attribute

Компания Microsoft определяет атрибут attribute, который используется для объявления другого атрибута.

Компиляция управляемых С++-программ

На момент написания этой книги единственный доступный компилятор, который мог обрабатывать программы, ориентированные на работу в среде .NET Framework, поставлялся компанией Microsoft (Visual Studio .NET). Чтобы скомпилировать управляемую программу, необходимо использовать команду /сlr, которая передаст вашу программу "в руки" универсального средства Common Language Runtime.


Предметный указатель

-Символы-

#define, директива, 570

#elif, директива, 576

#endif, директива, 575

#error, директива, 574

#if, директива, 575

#ifdef, директива, 577

#ifndef, директива, 577

#include, директива, 574; 602

#pragma, директива, 580

#undef, директива, 578

#using, 609

.NET Framework, 606

_ _abstract, 606

_ _box, 607

_ _cplusplus, макрос, 582

_ _DATE_ _, макрос, 582

_ _delegate, 607

_ _event, 607

_ _FILE_ _, макрос, 580; 582

_ _finally, 607

_ _gc, 607

_ _identifier, 607

_ _interface, 608

_ _LINE_ _, макрос, 580; 582

_ _nogc, 608

_ _pin, 608

_ _property, 608

_ _sealed, 608

_ _STDC_ _, макрос, 582

_ _TIME_ _, макрос, 582

_ _try_cast, 608

_ _typeof, 609

_ _value, 609

-A-

abort(), 417,419

abs(), 167; 191

Allocator, 524

American National Standards Institute, 18

ANSI, 18

asm, 514

assign(), 563

atof(), 164

attribute, 609

auto, спецификатор, 149; 206

-B-

bad(), 471

bad_cast, исключение, 484

BASIC, 24

basic ios, класс, 440

basic_iostream, класс, 440

basic_istream, класс, 440

basic ostream, класс, 440

basic_streambuf, класс, 440

BCPL, 23

before(), 475

begin(), 529

Binding

 early, 393

 late, 393

bool, 56

boolalpha, флаг, 448

break, 95

-C-

C#, 29

C++ Builder, 27; 33

C89, 23

C99, 23

Call-by-reference, 178

Call-by-value, 178

Cast, 75

catch, 416

cerr, 440

char, 56; 61

cin, 440

class, 266

clear(), 471

clock(), 213

clog, 440

close(), 458

CLR, 606

Common Language Runtime, 606; 609

compare(), 566

const, спецификатор типа, 202; 508

const_cast, оператор, 488

continue, 94

count(), алгоритм, 554

count_if(), алгоритм, 554

cout, 440

-D-

Daylight Saving Time, 251

dec, флаг, 448

delete, 230

double, 40; 56

do-while, 93

dynamic_cast, оператор, 483

-E-

Early binding, 393

end(), 529

enum, 214

eof(), 463

erase(), 529

exit(), 418; 419

EXIT_FAILURE, константа, 419

EXIT_SUCCESS, константа, 419

explicit, 510

extern, 206; 516

-F-

fabs(), 191

fail(), 471

false, константа, 57

fclose(), 595

feof(), 595

ferror(), 597

fgetc(), 595

fill(), 451

find(), 565

fixed, флаг, 448

flags(), 449

Flat model, 141

float, 56

flush(), 467

fmtflags, перечисление, 447

fopen(), 593

for, цикл, 49; 82

FORTRAN, 24

fprintf(), 600

fputc(), 594

fread(), 597

free(), 233

friend, 294

fscanf(), 600

fseek(), 599

Function overloading, 190

fwrite(), 597

-G-

gcount(), 463

Generated function, 398

get(), 460; 465

Getline(), 466

gets(), 107

good(), 471

goto, 97

GUI, 18; 34

-H-

Heap, 229

hex, флаг, 448

-I-

IDE (Integrated Development Environment), 33

if, 48; 78

if-else-if, 81

Inline function, 283

inline, модификатор, 284; 574

insert(), 529; 537

Instantiating, 398

int, 38; 56; 61

Integral promotion, 74

Integrated Development Environment, 33

internal, флаг, 448

International Standards Organization, 18

ios, класс, 447

ios_base, класс, 440

iostate, перечисление, 470

isalpha(), 114

ISO, 18

-J-

Java, 29

-K-

Kbhit(), 139

-L-

labs(), 191

Late binding, 393

left, флаг, 448

list, класс, 536

long double, 61; 62

long int, 61; 62

long, модификатор, 60

-M-

main(), 162

make_pair(), 546

malloc(), 233

managed, 609

Manipulator, 447

map, класс, 545

merge(), 537

MFC, 387

Microsoft Foundation Classes, 387

Microsoft Intermediate Language, 606

Modula-2, 23; 41

MSIL, 606

Multiple indirection, 141

mutable, 509

-N-

name(), 475

namespace, 494

Namespace, 35

new, оператор, 230; 430

nothrow, 431

npos, 561

NULL, 594

-O-

Object Oriented Programming, 264

oct, флаг, 448

OOP, 264

open(), 456

openmode, перечисление, 457

operator, 320

Operator, 68

overload, 193

-P-

pair, класс, 546

Pascal, 23; 41

peek(), 467

Plain Old Data, 281

POD-struct, 281

Pointer-to-member, 517

precision(), 451

Predicate, 524

Preprocessor, 570

printf(), 585

private, 281; 355

protected, 357

public, 267; 355

push_back(), 529; 537

put(), 460

putback(), 467

-Q-

qsort(), 503

Quicksort, алгоритм, 503

-R-

rand(), 138; 478

rdstate(), 470

read(), 461

Reference parameter, 181

register, спецификатор, 211

reinterpret_cast, оператор, 490

remove(), 600

return, инструкция, 166

rewind(), 597

rfind(), 565

right, флаг, 448

RTTI, 474

-S-

scanf(), 588

Scanset, 590

scientific, флаг, 448

seekg(), 468; 470

seekp(), 468; 470

setf(), 448

short int, 61

short, модификатор, 60

showbase, флаг, 448

showflags(), 450

showpoint, флаг, 448

showpos, флаг, 448

signed char, 61

signed int, 61

signed long int, 61; 62

signed short int, 61

signed, модификатор, 60

Simula67, 26

sizeof, 227; 263

skipws, флаг, 448

splice(), 537

Standard C++, 27

Standard Template Library, 26; 54; 522

static, модификатор, 208; 210; 506

static_cast, оператор, 489

std, пространство имен, 35; 438

stderr, поток, 585

stdin, поток, 585

stdout, поток, 585

STL, 26; 54; 522

strcat(), 109

strcmp(), 110

strcpy(), 109; 171

Stream, 439

streamsize, тип, 451

string, класс, 559

strlen(), 111; 161

struct, 238

switch, 87

-T-

tellg(), 470

tellp(), 470

template, 396; 405

template<>, 401; 413

terminate(), 417

this,317; 508

throw, 416

throw-выражение, 427

time_t, тип даты, 251

tm, структура, 251

tolower(), 113

toupper(), 135

true, константа, 57

try, 416

Type promotion, 74

type_info, класс, 474

typeid, 474

typename, 396

-U-

unexpected(), 427

Union, 258

unitbuf, флаг, 448

unmanaged, 609

unsetf(), 448; 449

unsigned char, 61

unsigned int, 61

unsigned long int, 61; 62

unsigned short int, 61

unsigned, модификатор, 60

uppercase, флаг, 448

using, 35; 497

virtual, 375; 381

Visual Basic, 23

Visual C++, 27; 33

void, 43; 47; 56

void-функции, 169

volatile, спецификатор типа, 204

-W-

wcerr, 440

wchar_t, 56

wcin, 440

wclog, 440

wcout, 440

while, 91

width(), 451; 452

write(), 461

-А-

Абстрактный класс, 393

Алгоритм

 adjacent_find(), 551

 binary_search(), 551

 copy(), 551

 copy_backward(), 551

 count(), 551

 count_if(), 551

 equal(), 551

 equal_range(), 551

 fill(), 551

 fill_n(), 551

 find(), 551; 552

 find_end(), 551

 find_first_of(), 552

 for_each(), 552

 generate(), 552

 generate_n(), 552

 includes(), 552

 inplace_merge(), 552

 iter_swap(), 552

 lexicographical_compare(), 552

 lower_bound(), 552

 make_heap(), 552

 max(), 552

 max_element(), 552

 merge(), 552

 min(), 552

 min_element(), 552

 mismatch(), 552

 next_permutation(), 552

 nth_element(), 552

 partial_sort(), 552

 partial_sort_copy(), 552

 partition(), 552

 pop_heap(), 553

 prev_permutation(), 553

 push_heap(), 553

 Quicksort, 105

 random_shuffle(), 553

 remove(), 553

 remove_copy(), 553; 555

 remove_copy_if(), 553

 remove_if(), 553

 replace(), 553

 replace_copy(), 553; 555

 replace_copy_if(), 553

 replace_if(), 553

 reverse(), 553; 557

 rotate(), 553

 search(), 553

 search_n(), 553

 set_difference(), 553

 set_intersection(), 553

 set_symmetric_difference(), 553

 set_union(), 553

 sort(), 553

 sort_heap(), 553

 stable_partition(), 553

 stable_sort(), 553

 swap(), 553

 swap_ranges(), 553

 transform(), 553; 557

 unique(), 553

 upper_bond(), 553

Алгоритмы, 523; 551

 командной строки, 162

 по умолчанию, 193

 функции main(),45; 162

Ассемблер, 23; 514

Атрибут

 attribute, 609

-Б-

Библиотека

 <mscorlib.dll>, 609

 STL, 522

Битовое множество, 525

Битовые поля, 256

Блок кода, 24; 51; 148

-В-

Вектор, 527

Виртуальное наследование, 375

Виртуальные функции, 381

Выражение, 73

 условное, 79

-Г-

Глобальные переменные, 59

-Д-

Дек, 525

Декремент, 69

Деструктор, 273

Динамическая идентификация типов, 474

Динамическая инициализация, 300

Динамический массив, 526

Директива препроцессора, 570

 #define, 570

 #elif, 576

 #endif, 575

 #error, 574

 #if, 575

 #ifdef, 577

 #ifhdef, 577

 #include, 574; 602

 #line, 580

 #pragma, 580

 #undef, 578

 #using, 609

Дополнительный код, 62

-З-

Заголовки, 172

Заголовок

 <algorithm>, 551

 <bitset>, 525

 <cctype>, 113

 <cstdio>, 584

 <cstdlib>, 44; 419; 504

 <cstring>, 109

 <ctime>, 213; 251; 298

 <deque>, 525

 <fstream>, 456

 <functional>, 525

 <iomanip>, 453

 <iostream>, 35; 438; 440; 466

 <list>, 525

 <map>, 525

 <new>, 430; 436

 <queue>, 526

 <set>, 526

 <stack>, 526

 <string>, 559

 <typeinfo>, 474

 <utility>, 525

 <vector>, 526

 stdio.h, 588

Заголовочный файл

 <iostream.h>, 438

 stdio.h, 584

-И-

Идентификатор, 53

Индекс, 102

Инициализация

 динамическая, 300

 массивов, 115

 переменных, 66

Инкапсуляция, 27

Инкремент, 69

Инструкция

 continue, 94

 do-while, 93

 for, 49

 goto, 97

 if, 48; 78

 return, 45; 166

 switch, 87

 while, 91

Исключение, 230; 416

 bad_alloc, 430

 bad_cast, 484

 bad_typeid, 477

 System::InvalidCastException, 608

Исключительная ситуация, 416

Итераторы, 523

 входные, 523

 выходные, 523

 двунаправленные, 523

 однонаправленные, 523

 произвольного доступа, 523

 реверсивные, 524

-К-

Класс, 266

 allocator, 524

 basic_ios, 440

 basic_iostream, 440

 basic_istream, 440

 basic_ostream, 440

 basic_streambuf, 440

 fstream, 456

 ifstream, 456

 ios, 447; 457

 ios_base, 440

 list, 536

 map, 545

 ofstream, 456

 pair, 546

 string, 559

 type_info, 474

 vector, 527

 абстрактный, 393

 базовый, 352

 полиморфный, 381; 475

 производный, 352

 шаблонный

 pair, 525

Классы

 контейнерные, 525

  bitset, 525

  deque, 525

  list, 525

  map, 525

  multimap, 526

  multiset, 526

  priority_queue, 526

  queue, 526

  set, 526

  stack, 526

  vector, 526

 обобщенные, 404

Ключевые слова C++, 53

Комментарий, 34

Компилятор

 C++ Builder, 33

 Visual C++, 33

Константа, 63

 CLOCKS_PER_SEC, 298

 EXIT_FAILURE, 419

 EXIT_SUCCESS, 419

 npos, 561

Конструктор, 272; 511

 копии, 305; 311

 параметризованный, 275

Контейнерные классы, 525

Контейнеры, 523

 ассоциативные, 523; 545

 векторы, 526

 последовательные, 523

Куча, 229; 552; 553

Кэш, 212

-Л-

Лексема, 132

Линейный список, 525

Литерал, 63

 восьмеричный, 64

 строковый, 65; 106

 шестнадцатеричный, 64

Локальные переменные, 57

-М-

Макроимя, 570; 582

Макроподстановка, 570

Макрос

 _ _cplusplus, 582

 _ _DATE_ _, 582

 _ _FILE_ _, 582

 _ _LINE_ _, 582

 _ _STDC_ _, 582

 _ _TIME_ _, 582

 SEEK_CUR, 599

 SEEK_END, 599

 SEEK_SET, 599

Манипулятор, 452

 boolalpha, 452

 dec, 452

 endl, 452

 ends, 452

 fixed, 452

 flush, 452

 hex, 452

 internal, 452

 left, 452

 noboolalpha, 452

 noshowbase, 452

 noshowpoint, 452

 noshowpos, 452

 noskipws, 452

 nounitbuf, 453

 nouppercase, 453

 oct, 453

 resetiosflags(), 453

 right, 453

 scientific, 453

 setbase(), 453

 setfill(), 453

 setiosflags(), 453; 454

 setprecision(), 453

 setw(), 453

 showbase, 453

 showpoint, 453

 showpos, 453

 skipws, 453

 unitbuf, 453

 uppercase, 453

 ws, 453; 454

Манипуляторные функции, 454

Массив, 102; 131

 двумерный, 114

 инициализация, 115

 многомерный, 115

 одномерный, 102

 объектов, 286

 строк, 119

 указателей, 137

Метаданные, 609

Метка, 98