【发布时间】:2014-01-02 08:47:19
【问题描述】:
当我个人学习 C++ 时,我怀疑将指针分配给类。例如:
43 int main () {
44 View *window = new View ("window");
45 Render *renderer; // why Render(upper class) points subclass and it works?
46 renderer = new Print;
47 renderer->draw (window); // this renderer works like Print function. why?
48
49 //what are the difference between up and down?
50 Print *a;
51 a = new Print;
52 a->draw (window);
53 return 0;
54 }
供您参考,Render 是类,Print 是 Render 的子类。但是,正如您在第 46 行中看到的,Upper class 指向子类并且它可以正常工作。
所以,我也尝试在第 52 行指向 Print 类并调用 draw 函数。它可以正常工作。
我不知道它们有什么区别以及为什么它可以在没有错误或警告的情况下工作。
【问题讨论】:
-
之所以有效,是因为这就是语言的设计方式。这应该包含在任何介绍性 C++ 书籍中。请注意,您有内存泄漏:每个
new都需要一个delete。 -
这是多态性。
标签: c++ class variable-assignment