C++类中的静态成员变量与普通成员变量有很多不同的地方,主要有以下几点:
1. 声明和定义
静态成员变量必须在类外部进行声明和定义,而普通成员变量可以在类内部进行声明和定义。
//声明和定义静态成员变量 class A { public: static int a; }; int A::a = 10; //声明和定义普通成员变量 class B { public: int b; }; B::b = 10;
2. 存储位置
静态成员变量存储在类外部的静态存储区,普通成员变量存储在类的对象中。
3. 初始化
静态成员变量在类外部进行初始化,而普通成员变量可以在类的构造函数中进行初始化。
//初始化静态成员变量 class A { public: static int a; }; int A::a = 10; //初始化普通成员变量 class B { public: int b; B() { b = 10; } };
4. 访问方式
静态成员变量可以通过类名和对象名访问,而普通成员变量只能通过对象名访问。
//访问静态成员变量 class A { public: static int a; }; int main() { cout << A::a << endl; A a; cout << a.a << endl; return 0; } //访问普通成员变量 class B { public: int b; }; int main() { B b; cout << b.b << endl; return 0; }
5. 作用域
静态成员变量的作用域是整个程序,而普通成员变量的作用域只限于类的定义范围内。
6. 内存占用
静态成员变量在程序运行期间一直占用内存,而普通成员变量只有在创建对象时才会占用内存。
7. 生命周期
静态成员变量的生命周期与整个程序相同,而普通成员变量的生命周期只限于对象的存在期。
从上面的比较中可以看出,C++类中的静态成员变量与普通成员变量有很多不同的地方,比如声明和定义、存储位置、初始化、访问方式、作用域、内存占用和生命周期等。在使用C++类时,应该根据不同的需求来选择合适的成员变量。