多态性:对指针/引用的需求
多态性是面向对象编程中的一个基本概念,它允许不同类的对象就好像它们属于一个共同的超类一样。虽然在堆上分配内存足以实现动态绑定似乎很直观,但缺乏指针或引用从根本上阻碍了多态性。
要理解原因,请考虑以下示例:
Derived d; Base* b = &d;
在这种情况下,d 驻留在堆栈上,但多态性对 b 仍然有效。这是因为 b 保留了定位派生类实例所需的信息。
另一方面,如果没有基类指针或引用,多态性就无法运行。考虑:
Base c = Derived();
由于切片,c 对象被识别为 Base 而不是 Derived 对象。虽然多态性在技术上有效,但派生类对象本质上丢失了。
最后,在下面的代码中:
Base* c = new Derived();
c 只是指向一个内存位置,可能包含 Base 或 Derived 对象。动态绑定对于虚拟方法调用仍然是可能的,因为调用者不知道具体的类。
因此,指针或引用的使用对于多态性是必不可少的,因为它们:
以上是为什么指针/引用对于多态性至关重要?的详细内容。更多信息请关注PHP中文网其他相关文章!