gpt4 book ai didi

c++ - C++ 编译器中的 POD 和 VPtr 设计

转载 作者:行者123 更新时间:2023-11-30 00:57:21 26 4
gpt4 key购买 nike

这个问题更多是关于语言设计,而不是关于更改 C++ 约定。

在考虑 Go 编程语言(它如何清理将数据与接口(interface)分离,有效地将所有对象转换为结构)和 C++ 中的 POD(我喜欢 memset/memcpy 在分配大量类似结构的小对象时),我想知道将 vptr 直接附加到对象实例的 C++ 编译器约定,弄乱了布局。

这是一项要求还是只是一项约定?

如果您正在设计一个替代编译器,您是否可以为 vptrs 使用一个大的外部查找表?例如, map<void*,vptr> 这样的结构 ?所有实例都是 POD,关于内存设置,要查找其 vptr,我们将获取其地址并查看大型外部查找表。

缺点是,所有内容都需要查找。这是可行的替代设计还是存在严重缺陷?

最佳答案

性能很可能会受到影响。一些语言为方法查找添加某种缓存。

您可以使用不同的方法来查找调用给定选择器(或方法名称)的方法。看SmalltalkSelfJavascriptCommon Lisp Object systemOcaml

但是,某些语言的实现包含巧妙的技巧(缓存、JIT 等),使它们与 C++ 一样快(但这是一个实现问题,而不是语言设计问题)。

关于c++ - C++ 编译器中的 POD 和 VPtr 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8381780/

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