看起来像书中的错误......由于C++是强类型语言,所以您绝对必须命名类型或别名类型(即typedef
)。
这里是在对象上,声明和定义的C++ 03规范规定:当对象是被确定
一个对象的属性:
1.8节/ 1创建。一个对象可以有一个名字(第3章)。一个对象具有一个影响其寿命(3.8)的存储持续时间(3.7)。 对象有一个类型(3.9)。术语对象类型指的是用于创建对象的类型。
然后在第3.1/1:
的声明是一个定义 ... [注:该段其余部分是此规则的例外,并省略了,因为他们不适用于这种情况]
然后,在第3.1节/ 6:
的程序是生病-FO Rmed指如果任何对象的定义给出了对象的不完全类型
最后,在第3.9.2节/ 1它指出:
...术语对象类型(1.8)包括在创建对象时指定的cv-qualifiers。存在const说明符中的一个decl-specifier -seq声明对象为const限定的对象类型;这样的对象被称为const对象。 ...
所以根据3.9.2/1,const
是限定符,不是一个类型,并且作为-这样,它具有限定一个有效的非限定类型。其次,在给出的例子中,根据3.1/1,size
的声明也是一个定义,因此size
对象必须具有关联的类型或程序根据3.1/6格式不合适。
C的隐式'int'已经在C++ 98中被删除。 – 2012-03-29 16:47:55