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