Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 26

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 20 21 22 23 24 25 < 26 > 27 28 29 30 31 32 .. 204 >> Следующая

auto else new throw
bad cast enum operator true
bad_typeid except private try
bool explicit protected type_info
break extern public typedef
case false register typeid
catch finally reinterpret_cast typename
char float return union
class for short unsigned
const friend signed using
const cast goto sizeof virtual
continue if static void
default inline static cast volatile
delete int stuct while
do long switch
double mutable template
dynamic_cast namespace this
• Далее приведен список зарезервированных ключевых слов, используемых в системе программирования Visual С++.
• В языке С разрешен вызов функции перед ее объявлением или определением (в этом случае генерируется предупреждение). Теперь в С++ определение или объявление функции должно предшествовать любому вызову функции внутри исходного файла (в противном случае компилятор сгенерирует ошибку необъявленный идентификатор).
Примечание
В этой книге термин объявление функции относится к объявлению, описывающему только имя функции, типы возвращаемого значения и параметров, а определение функции - к объявлению, содержащему полный код функции. Заметьте, что в описании этих терминов может быть использован общий термин объявление, связывающий имя функции с типом возвращаемого ею значения.
asm
based
cdecl
declspec
except
fastcall
finally
inline
int8
intl6
int32
int64
leave
single_inheritance
stdcall
try
uuidof
virtual inheritance
multiple_inheritance
• В языке С можно объявить функцию, использующую один или более параметров, предварительно их не перечисляя, например:
int FuncX (); /* эта функция языка С на самом деле будет
использовать несколько параметров */
Однако в языке С++ такое объявление допустимо только для функций, которые не имеют параметров.
• В языке С можно использовать "старый стиль" синтаксиса определения функции, в котором типы параметров следуют за списком параметров, например:
int FuncX (А, В); /* правильно в С, ошибка в С++ */ int А; int В;
{
/* код FuncX */
return 0;
}
В языке С++ использование такого стиля недопустимо.
• В некоторых версиях С глобальный объект данных можно объявить в программе более одного раза без использования спецификатора extern. В языке С++ для определения переменной можно объявить глобальный объект данных без спецификатора extern только один раз. Чтобы сделать переменную доступной в определенной области видимости, все другие объявления элемента должны включать ключевое слово extern. (Термин область видимости указывает на фрагмент текста программы, в котором используется определенное имя.)
• В языке С (в соответствии со стандартом ANSI) можно присвоить указатель типа void указателю любого типа. Например, следующий код задает присваивание указателя типа int указателю типа void:
int А;
int *PInt;
void *PVoid = SA;
Pint = PVoid; /* правильно для С; ошибка для С++ */
В языке С++ присваивание Pint генерирует ошибку, потому что компилятор С++ не будет автоматически преобразовывать указатель типа void в указатель другого типа в выражении присваивания. Для выполнения присваивания используется операция изменения типа.
Pint = (int *)PVoid; /* правильно в С и С++ */
• В языке С названия тегов конструкций enum, struct или union могут совпадать с названиями типов данных, определенными оператором typedef, в пределах одной области видимости. Например, следующий код успешно компилируется в С:
/* этот код правильный в С, но ошибочный в С++: */
typedef int TypeA;
struct TypeA {
int I; char (redouble D; };
typedef int TypeB; union TypeB
{
int I; char C; double D;
};
typedef int TypeC;
enum TypeC (Red, Green, Blue);
Компилятор языка С может различать дублирующие имена, потому что при описании перечислений, структур и объединений используются префиксы enum, struct или union, например:
/* этот код правилен в С, но ошибочен в С++: */
typedef int TypeA; struct TypeA {
int I; char C; double D;
};
TypeA X; /* создает переменную типа int */
struct TypeA Y; /* создает структуру TypeA */
sizeof (TypeA); /* вычисляет размер переменной типа int */ sizeof (struct TypeA); /+ вычисляет размер структуры TypeA */
В языке С++ теги конструкций enum, struct, union или class (в С++ их чаще называют именами, а не тегами) должны отличаться от любого имени, заданного в операторе typedef внутри той же области видимости. (Ключевое слово class уникально для языка С++. Классы рассмотрены в гл. 4.) Определение создает новый тип, на который можно сослаться, используя одно имя этого типа, поэтому не рекомендуется использовать префикс enum, struct, union или class (хотя при желании это можно делать). Описанное свойство продемонстрировано следующим фрагментом программы:
/* этот код ошибочен в С, но правилен в С++: */
struct TypeA {
int I; char С; double D; };
struct TypeA X; TypeA Y;
/* создает структуру TypeA */
/* также создает структуру TypeA */
sizeof (struct TypeA); /* вычисляет размер структуры TypeAyields */ sizeof (TypeA) ; /* вычисляет размер структуры TypeA */
Предыдущая << 1 .. 20 21 22 23 24 25 < 26 > 27 28 29 30 31 32 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100