Ⅰ 下面对静态数据成员的描述中,正确的是( )。
【答案】:D
静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。
Ⅱ 类的静态成员和非静态成员的区别是什么
静态成员的特点:
静态成员在类的内部声明,但在类的外部定义和初始化,其值可改变。
静态成员只能由类的外部进行初始化,除非整型const static数据成员被常量表达式初始化,此时可在类内部初始化,但需外部定义。
静态成员可为类类型,而非静态成员限于自身类的引用或指针。
静态成员可用作类成员函数的默认实参。
静态成员的值可被改变。
静态成员与非静态成员的区别:
名称上,成员变量称为实例变量,静态变量称为类变量。
内存存储上,成员变量存储于堆内存中的对象中,静态变量存储于方法区的静态区。
生命周期不同,成员变量随对象出现与消失,静态变量则随类出现与消失。
静态变量声明时使用static修饰符,非静态变量在类被实例化时创建,通过类访问;静态变量通过类进行访问。
一个类的所有实例共享同一静态变量值,不同实例的非静态变量可有不同的值。
静态函数实现中不能使用非静态成员,如非静态变量、非静态函数等。