Язык программирования D: различия между версиями

Содержимое удалено Содержимое добавлено
м Откат правок 46.147.244.41 (обс.) к версии 95.83.95.185
м Ссылки; избыточные <big /> и <font /> вокруг <source />; пробелы.
Строка 94:
C++ обычно требует, чтобы функции и классы были объявлены дважды — объявление происходит в заголовочных файлах (*.h), а описание происходит в файлах исходного кода (*.cpp). Это утомительный и подверженный ошибкам процесс. Очевидно, что программисту достаточно объявить функцию или класс лишь однажды, а компилятор должен впоследствии извлечь информацию об объявлении и сделать ее доступной для импортирования. Именно так работает язык программирования D, например:
 
<big><source lang=d>
class ABC
{
Строка 102:
 
int q;
</source></big>
 
И более нет необходимости отдельного описания функций-членов, атрибутов и спецификаций внешних объявлений (<code>extern</code>), как в языке C++:
 
<big><source lang=d>
int ABC::func() { return 7; }
 
Строка 112:
 
extern int q;
</source></big>
 
Заметка: Конечно же, в C++ тривиальные функции вроде { return 7; } тоже описаны внутри класса, но более сложные должны быть описаны отдельно. Вдобавок, если нужны опережающие ссылки (ссылки на класс или функцию, которые объявлены, но ещё не определены), то для этих объектов нужны прототипы (prototype). Следующий код не будет работать в C++:
 
<big><source lang=d>
class Foo
{
Строка 127:
int bar() { return 3; }
};
</source></big>
 
Но эквивалентный код на языке D будет рабочим:
 
<big><source lang=d>
class Foo
{
Строка 141:
int bar() { return 3; }
};
</source></big>
 
А то, будет ли функция встраиваемой (при компиляции вызов такой функции заменяется ее кодом) или нет, в языке D зависит от настроек оптимизатора.