我是一名c++新手。
我有以下的类:
class User
{
public:
User(const string& username) {
m_username = username;
}
string username() const {
return m_username;
}
void setUsername(const string &username) {
m_username = username;
}
private:
string m_username;
};
这里是 main.cpp 的代码:
User *createUser() {
string username = "someUser";
User *u = new User(username);
return u;
}
int main(int argc, char *argv[])
{
User *u2 = createUser();
cout << u2->username() << endl;
return 0;
}
在函数
createUser()
中,我创建了本地变量username
,并通过引用传递给User类
的构造函数。当函数结束时,变量username
超出范围,因此应删除User
类的m_username
成员的值。但是它仍然可以在函数外部访问,例如,主方法将“someUser”打印到控制台。
为什么?
createUser
中的username
局部变量超出作用域并被删除。User
实例中的m_username
成员变量是完全独立的变量。 - user253751