一本书(E.Balagurusamy用C ++进行面向对象编程)说
const size = 10;
表示
const int size = 10;
但g ++编译器(ubuntu中的版本-4.6.1)发出错误
error: ‘size’ does not name a type
基于此我应该得出什么结论?
答案 0 :(得分:5)
先生。 Balagurusamy错了。完全错了。 类型是强制性的,有或没有const
关键字。
你应该停止阅读这本书。你也不应该读Yashwant Kanetkar的书。我知道这些作者的书籍在印度许多大学的学生中非常受欢迎。
我建议你从这个列表中得到一本介绍性的书:
答案 1 :(得分:3)
看起来像书中的错误...你必须命名一个类型或别名类型(即typedef
),因为C ++是一种强类型语言。
以下是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-qualifiers 。 decl-specifier-seq 中 const 说明符的存在声明了 const-qualified 对象类型的对象;这样的对象称为 const 对象。 ...
因此,根据3.9.2 / 1,const
是限定符,而不是类型,因此,它必须限定有效的非限定类型。其次,在给出的示例中,根据3.1 / 1,size
的声明也是一个定义,因此size
对象必须具有关联类型,或者程序根据3.1格式不正确/ 6
答案 2 :(得分:3)
我会说:声明错了。使用const关键字时必须使用数据类型。