静态局部变量只初始化一次,但是可以用初始化外的其他方式更改值。
#include <iostream>
#include <string>
using namespace std;
struct Person
{
Person(string name);
void reset(string other_name);
string m_name;
};
Person::Person(string name)
{
m_name = name;
cout << "构造函数初始化" << m_name << endl;
}
void Person::reset(string other_name)
{
m_name = other_name;
cout << "更改成员 " << m_name << endl;
}
void cssta(string name)
{
static Person m_person(name);
m_person.reset(name); // 可注释后对比差异
cout << m_person.m_name << endl;
}
int main()
{
Person m_person("JANE");
m_person.reset("JOE");
cssta("a");
cssta("b");
}