一个构造多次的类中某个成员变量从头到尾需要只调用一次
时间: 2023-08-18 22:07:02 浏览: 132
安徽工业大学861 数据结构2020年考研专业课考试范围.pdf
如果一个成员变量需要从头到尾只调用一次,可以使用静态成员变量和静态函数来实现。在静态函数中完成对成员变量的初始化,并返回该成员变量的值。在构造函数中,使用静态函数来获取成员变量的值,如果该成员变量已经被初始化过,就不需要再次进行初始化。例如,下面的代码中,使用了一个静态成员变量和一个静态函数来实现从头到尾只调用一次的效果:
```c++
class MyClass {
public:
MyClass() {
if (!initialized) {
// 只在第一次构造对象时执行以下代码
member_var = init_member_var();
initialized = true;
}
}
private:
static bool initialized;
static int member_var;
static int init_member_var() {
// 初始化 member_var 的代码
return 0; // 返回 member_var 的初始值
}
};
bool MyClass::initialized = false;
int MyClass::member_var = 0;
```
这样,每次构造对象时只需要判断 initialized 是否为 true,如果为 true,直接使用 member_var 的值即可,否则调用 init_member_var() 函数初始化 member_var,并将 initialized 置为 true。由于 init_member_var() 函数是静态的,只会被调用一次,因此 member_var 也只会被初始化一次。
阅读全文