面试题答案
一键面试特点和作用
- static成员变量:
- 特点:
- 为类的所有对象所共享,而不是某个对象特有的。无论创建多少个类的对象,静态成员变量都只有一份实例。
- 存储在全局数据区,而不是对象的内存空间中。
- 必须在类外进行初始化。
- 作用:
- 用于统计类的对象个数等场景,因为其值对于所有对象是共享的。例如,记录某个类创建了多少个对象。
- 特点:
- static成员函数:
- 特点:
- 不与类的特定对象关联,没有this指针。
- 只能访问类的static成员变量和其他static成员函数。
- 作用:
- 提供一种与类相关但不依赖于具体对象的操作。例如,用于执行一些与类整体相关的初始化或统计操作,而不需要创建对象。
- 特点:
定义和使用示例
#include <iostream>
class MyClass {
public:
static int staticVar; // 声明static成员变量
static void staticFunction(); // 声明static成员函数
};
// 在类外初始化static成员变量
int MyClass::staticVar = 0;
// 定义static成员函数
void MyClass::staticFunction() {
std::cout << "Static variable value: " << staticVar << std::endl;
}
int main() {
MyClass obj1;
MyClass obj2;
// 通过类名访问static成员变量和函数
MyClass::staticVar = 10;
MyClass::staticFunction();
// 也可以通过对象访问static成员变量和函数
obj1.staticFunction();
obj2.staticFunction();
return 0;
}
在上述代码中,staticVar
是MyClass
类的静态成员变量,staticFunction
是静态成员函数。通过类名或对象都可以访问静态成员,静态成员变量在类外初始化,静态成员函数只能访问静态成员。