指针和类,输出

问题描述 投票:0回答:1

谢谢,

所以,我正在处理包含pointers的类,最后一个是主题

如果我有类似以下实例的类,我需要推动以display该类的指针(堆指针)为目标的数据,知道它的目标(指向)为member valueC-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; }

c++ oop pointers methods heap
1个回答
0
投票
仅对您的代码添加几个注释。最重要的是,继承对一切都很好。不需要将display函数声明为虚拟函数,因为这假定您将在Child中重新定义它,而不必这样做。简而言之,所有的弊端都来自指针mem。在母亲类的析构函数中,您有以下内容:
© www.soinside.com 2019 - 2024. All rights reserved.