谢谢,
所以,我正在处理包含pointers的类,最后一个是主题
如果我有类似以下实例的类,我需要推动以display该类的指针(堆指针)为目标的数据,知道它的目标(指向)为member value在C-tor(成员)中。
一些纠正错误的帮助。
我为继承的[[details添加了一个子类,如果可以添加一些详细信息(如果有的话)。
如果我可以添加的话,我正在为母班获得值7405304,为子班获得值4997952(对于相应的预期输出,不是9和99),为什么会发生这种情况?谢谢。
#include <iostream>
class Mother {
public:
Mother(int member) {
mem = new int; /*Heap Ptr*/
mem = &member;
std::cout << "C-tor" << std::endl;
}
~Mother() {
delete mem;
*mem = 0;
std::cout << "D-tor" << std::endl;
}
virtual void display() const {
std::cout
<< *mem
<< std::endl; /*What should i put here ? I've an unexpected value */
}
private:
int* mem = 0;
};
class Child : public Mother {
public:
Child(int a) : Mother(a) {}
~Child() {}
};
void data(Mother const* m) {
m->display();
}
int main() {
int a(9), b(99);
Child child(a);
Mother mother(b);
data(&mother);
data(&child);
return 0;
}
display
函数声明为虚拟函数,因为这假定您将在Child
中重新定义它,而不必这样做。简而言之,所有的弊端都来自指针mem
。在母亲类的析构函数中,您有以下内容: