Тип данных const-ключевое слово по умолчанию - int-type? - PullRequest
3 голосов
/ 29 марта 2012

В одной книге (объектно-ориентированное программирование на C ++ Э.Балагурусами) говорится, что

 const size = 10;  

означает

 const int size = 10; 

, но компилятор g ++ (версия-4.6.1 в Ubuntu)ошибка как

error: ‘size’ does not name a type 

что я должен сделать на основании этого?

  1. g ++ не поддерживает эту функцию.
  2. Это новая функция.Последняя версия g ++ поддерживает это.
  3. Это неверное утверждение.Тип данных является обязательным с ключевым словом const .
  4. Что-то еще.

Ответы [ 3 ]

5 голосов
/ 29 марта 2012

г. Балагурузами это неправильно. Совершенно неправильно. Тип является обязательным, с ключевым словом const или без него.

Ты должен перестать читать эту книгу. Вы не должны читать книги Yashwant Kanetkar также. Я знаю, что книги этих авторов очень популярны среди студентов многих университетов Индии.

Я бы посоветовал вам получить вступительную книгу из этого списка:

3 голосов
/ 29 марта 2012

Я бы пошел с: утверждение неверно.Тип данных является обязательным с ключевым словом const.

3 голосов
/ 29 марта 2012

Похоже на ошибку в книге ... вы определенно должны назвать тип или псевдоним типа (т. Е. typedef), поскольку C ++ является языками со строгой типизацией.

Вот что такоеСпецификация ++ 03 указывает на объекты, объявления и определения:


Раздел 1.8 / 1:

Свойства объекта определяются при создании объекта.Объект может иметь имя (пункт 3).Срок хранения объекта (3.7) влияет на его время жизни (3.8). Объект имеет тип (3.9).Термин тип объекта относится к типу, с которым создается объект.

Затем в разделе 3.1 / 1:

Объявление представляет собой определение ... [примечание: остальная часть абзаца является исключением из этого правила и опущена, поскольку в данном случае они неприменимы]

Затем в разделе 3.1 /6:

Программа плохо сформирована, если определение какого-либо объекта придает объекту неполный тип

Наконец, в разделе 3.9.2 / 1 говорится:

... термин тип объекта (1.8) включает в себя cv-квалификаторов , указанных при создании объекта.Наличие спецификатора const в decl-specier-seq объявляет объект const-qualified тип объекта;такой объект называется const объектом....


Таким образом, согласно 3.9.2 / 1, const является классификатором, а не типом, и как таковой, он должен квалифицировать допустимый неквалифицированный тип.Во-вторых, в данном примере, согласно 3.1 / 1, объявление size также является определением, и поэтому объект size должен иметь связанный тип, или программа некорректна в соответствии с 3.1 / 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...