【发布时间】:2016-02-03 01:39:22
【问题描述】:
我是 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 class 构造函数将其传递。当函数结束时,变量username 超出范围,因此m_username 类成员User 的值应该
删除。
但是在这个函数之外仍然可以访问,例如main 方法将“someUser”打印到控制台。
为什么?
【问题讨论】:
-
username中的局部变量createUser超出范围并被删除。User实例中的m_username成员变量是一个完全独立的变量。
标签: c++ pass-by-reference