Современная электронная библиотека ModernLib.Net

C++

ModernLib.Net / Программирование / Хилл Мюррей / C++ - Чтение (стр. 20)
Автор: Хилл Мюррей
Жанр: Программирование

 

 


      class const delete friend inline new operator overload public signed this virtual volatile
      как идентификаторы, недопустимы.
      Описание функции f(); означает, что f не получает парметров, в C же это значит, что f может получать параметр свершенно любого типа.
      В C внешнее имя может определяться несколько раз, а в С+ + оно должно быть определено ровно один раз.
      Имена классов в С++ находятся в том же пространстве, что и прочие имена, поэтому конструкции вроде
      int s; struct s (* /* ... */ *); f() (* s = 1; *)
      использоваться не могут. Однако, для разрешения болшинства конфликтов может применяться явное использование class, struct, union, enum (#8.2) или :: (#7.1). Например:
      int s; struct s (* /* ... */ *); void f() (*int s; struct s a; *) void g() (* ::s = 1; *)

15.3 Анахронизмы

      Изложенные здесь расширения могут предоставляться для того, чтобы упростить использование C программ как С++ прорамм. Обратите внимание, что каждая из этих возможностей сдержит нежелательные аспекты. Предоставляющая их реализация должна также обеспечивать пользователю способ удостовериться, что они не встречаются в исходном файле.
      Прежнее неопределенное имя может использоваться как имя функции в вызове. В этом случае имя будет неявно описано как
      функция, возвращающая int с типом параметра (...).
      Ключевое слово void может использоваться для указания того, что функция не получает параметров, так что (void) эвивалентно ().
      Могут использоваться программы, в которых используется синтаксис определения функций в C
      старое_определение_функции: спецификаторы_описания opt старый_описатель_функции список_описателей тело_функции
      старый_описатель_функции: описатель (* список_параметров *)
      список_параметров: идентификатор идентификатор , идентификатор
      например,
      max(a,b) (* return (a«b) ? b : a; *)
      Если функция, описанная как эта, была ранее описана, тип ее параметра будет принят (...), то есть, непроверенный. Если она была описана, ее тип должен согласоваться с типом описния.
      Вместо :: может использоваться точка для спецификации имени в определении функции члена. Например:
      int cl.fct() (* /* ... */ *)
      Одно и то же имя может быть описано одновременно и для класса или перечисления, и для объекта данных или функции в одной и той же области видимости.

  • Страницы:
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20