【发布时间】:2011-05-13 09:22:50
【问题描述】:
我有这些课程:
class A
{
};
class B : public A
{
public:
B(int val);
private:
int* m_int;
};
B::B(int val)
{
m_int = &val;
}
我这样调用代码,在 1 个函数内,我知道一旦超出范围,变量就会被销毁,但我只需要在这个函数中使用它们:
{
...
int _int = 0;
B obj(_int);
A *obj2 = &obj;
_int++;
...
}
问题是 _int 变为 1,但 m_int 保持不变。我需要 m_int 来反映 _int 中的值是什么,而无需使用代码对其进行更新。我认为有一个指向内存位置的指针会起作用吗?
第二个问题是,当我将鼠标悬停在 obj2 上时,为了查看 obj 的值,我收到消息“无法评估孩子”。
【问题讨论】:
-
你的代码能编译吗?
-
您发布的代码无法编译。首先,B的构造函数没有被声明,其次,在那个构造函数中,你将
m_int设置为ref的地址,这个地址在你的代码中没有出现。 -
@iammiling 的意思是您的代码不应编译,因为
B没有采用int的构造函数。 -
-1 用于发布代码,甚至无需先编译。
-
是错字,代码可以编译。
标签: c++ inheritance pointers reference polymorphism