面试题答案
一键面试- 定义:
- 静态成员变量是类中所有对象共享的成员变量。它不属于某个特定的对象,而是属于整个类。在类的定义中,使用
static
关键字声明静态成员变量。例如:
- 静态成员变量是类中所有对象共享的成员变量。它不属于某个特定的对象,而是属于整个类。在类的定义中,使用
class MyClass {
public:
static int sharedVariable;
};
- 初始化方式:
- 静态成员变量必须在类外进行初始化,且只能初始化一次。初始化时不需要再次使用
static
关键字。例如:
- 静态成员变量必须在类外进行初始化,且只能初始化一次。初始化时不需要再次使用
int MyClass::sharedVariable = 0;
- 访问方法:
- 可以通过类名直接访问静态成员变量,使用
::
作用域运算符。例如:
- 可以通过类名直接访问静态成员变量,使用
int value = MyClass::sharedVariable;
- 也可以通过对象来访问静态成员变量,但这种方式不推荐,因为静态成员变量不属于某个对象。例如:
MyClass obj;
int value2 = obj.sharedVariable;
- 在类的不同对象间保持数据一致性的示例:
#include <iostream>
class Counter {
public:
static int count;
Counter() {
++count;
}
~Counter() {
--count;
}
};
int Counter::count = 0;
int main() {
Counter obj1;
Counter obj2;
std::cout << "Number of objects: " << Counter::count << std::endl;
{
Counter obj3;
std::cout << "Number of objects: " << Counter::count << std::endl;
}
std::cout << "Number of objects: " << Counter::count << std::endl;
return 0;
}
在上述示例中,Counter
类有一个静态成员变量count
。每次创建Counter
类的对象时,构造函数会增加count
的值,每次销毁对象时,析构函数会减少count
的值。由于count
是静态成员变量,无论创建多少个Counter
类的对象,count
始终是共享的,从而在不同对象间保持数据一致性。每个对象对count
的修改都会影响到其他对象看到的count
值。