离开构造函数C ++后获取垃圾值

时间:2014-10-11 19:01:48

标签: c++ class pointers constructor garbage

我有一个编译和运行的程序,但是给了我不正确的值。 以下是感兴趣的部分:

int main() // assume correct "includes" are above
{
  Myclass f;
  f.print();
}

然后在我的头文件中:

class Myclass
{
 public:
  Myclass (int n = 1, int d = 1 ); // my default constructor , takes 2 arguments
  void print();
 private:
  int *numerator, denominator;
}

最后,实现文件:(假设包含正确的.h文件)

Myclass::Myclass (int n, int d)
{
  numerator = &n;
  denominator = d;
  std::cout<< *numerator << std::endl; // outputs 1, like i'd expect it to
}
void Myclass::print()
{
  std::cout << *numerator << std::endl; // outputs some absurd value, for example 4587172
}

实际上,只要我离开构造函数的安全性,分子就不再是它的数字(在这种情况下,&#39; 1&#39;由于默认值)。

我不确定我错过了什么,我希望我已经将代码浓缩到足以在此发布。

0 个答案:

没有答案