gpt4 book ai didi

c++ - 不能使用值但引用和指针的多态性的原因

转载 作者:可可西里 更新时间:2023-11-01 18:16:09 26 4
gpt4 key购买 nike

我在下面找到帖子 C++ polymorphism without pointers这说明 C++ 具有多态特性必须使用指针或引用类型。

我查看了一些进一步的资源,他们都说了同样的原因。

支持带值的多态性是否存在任何技术困难,或者有可能但 C++ 已决定不提供该功能?

最佳答案

多态处理值的问题归结为 object slicing问题:因为派生对象可能比它们的基类使用更多的内存,所以在自动存储中(即在堆栈上)声明一个值会导致只为基类分配内存,而不是为派生对象分配内存。因此,属于派生类的对象部分可能会被切掉。这就是为什么 C++ 设计者有意识地决定将虚拟成员函数重新路由到基类中的实现,这不能触及派生类的数据成员。

关于c++ - 不能使用值但引用和指针的多态性的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com