c语言符号常量的定义方法 当类中含有常量和静态数据成员时,如何对它们初始化?
当类中含有常量和静态数据成员时,如何对它们初始化?
类中只能初始化静态常量整数数据成员。
这是因为,当时人们认为类定义中的数据定义是声明,而不是数据定义。
仅当对象(变量、常量)由类定义时才定义数据。
静态常量整数数据成员
1)不是对象的一部分
2)可以生成常量表达式,因此可以在类中初始化。---否则,不适合将其用作数组的大小。
静态常量整数数据成员可用作常量表达式。如果没有在内部定义
,则在没有定义的情况下不能使用常量表达式。
C 11非静态成员变量(常量)可以直接初始化,也可以在初始化表中初始化。
在C 11中初始化非静态成员变量(常量)可视为为为变量(常量)分配默认值。
如何理解“即使一个常量静态数据成员在类内部被初始化了,通常情况下也应该在类的外部定义下该成员”?
在c入门第五版中,只涉及c 11的特性,因此不支持static const int n。以下答案假设您的文章来自c入门第五版。
本段中的常量静态数据成员是指同时添加constexpr和static关键字的数据成员。由于向其添加了constexpr,因此可以在类中定义初始值(通常,静态成员变量不能在类中定义)。constexpr的特性决定了初始值可以在类中定义,因为constexpr限制它必须是常量表达式。可以在编译时用相应的文本值替换所有constexpr变量。
因此,由constexpr和static关键字修改的数据成员实际上并不存在,而是由值替换。我想可能是为了方便。可能C只替换相应范围内的,所以它只替换类内的。因此,添加到类中的带有constexpr和static关键字的变量实际上并不存在,因此如果需要在类外使用常量静态数据成员,您还需要在类外定义它
Java中静态常量和静态变量的区别是不同的:静态变量属于类,所以也称为类变量;成员变量属于对象,所以称为类变量,也称为实例变量(object variables)内存中的不同位置:静态变量存储在方法区域的静态区域;成员变量存储在堆内存区域;成员变量随着对象(也称为实例)的创建而存在,随着对象的消失而消失。静态变量可以通过类名或对象调用;成员变量只能通过对象名调用。静态方法中没有this关键字。如何理解?非静态方法可以同时调用静态和非静态成员变量;非静态方法可以同时调用静态和非静态成员方法。
c语言符号常量的定义方法 double型常量表示正确的是 java定义静态常量
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。