我有一个编译和运行的程序,但是给了我不正确的值。 以下是感兴趣的部分:
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;由于默认值)。
我不确定我错过了什么,我希望我已经将代码浓缩到足以在此发布。