[英]Dynamic variable doesnt work
在此代码中,当我动态初始化它时,为什么first(“ invNummer”)始终为0? 当我将其作为静态对象(两个)工作时。
class Computer {
private:
int invNummer;
char* osName;
int state; // 0 – aus, 1 - an
public:
Computer(int INV, char* OS, int st);
void info() {
cout << invNummer << " " << osName << " " << state << endl;
}
};
Computer::Computer(int INV, char* OS, int st)
: invNummer(INV)
, osName(OS)
, state(st)
{};
int main()
{
Computer* one;
one = new Computer(10, (char*)"Windows", 1);
delete one;
Computer two(9, (char*)"Linux", 0);
one->info();
two.info();
return 0;
}
输出看起来像这样:
0 Windows 1
9 Linux 0
正如@ It's_comming_home向您指出的那样 ,您的问题与动态创建one
对象无关,而与该对象的删除有关:
delete one;
删除one
对象时,指针将悬空,即不再可用。 如果以后尝试取消引用它:
one->info();
您将得到未定义的行为 ,如您的输出所示。
要解决此问题,只需在调用one
对象的info()
方法后移动其删除即可:
one->info();
two.info();
delete one;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.