You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bjarne Stroustrup提及的具体类型(concrete types)的灵活性指什么?

关于C++具体类型灵活性的解答

问题解答

  • 他指的不只是指针的使用,更准确地说,是把具体类型的核心数据存储在堆上,类对象本身只保留一个"句柄"(可能是指针、引用计数、容量/大小信息等)来间接访问堆上的数据。指针只是实现这种句柄的常见方式之一,但并非唯一手段。
  • 这种灵活性确实包含无需重新编译这一关键优势,但还有更多延伸价值:
    • 当堆上的核心存储结构变更时,只要类对象的句柄部分大小和对外接口不变,用户代码就不需要重新编译——因为用户代码只与类的接口和对象的句柄部分交互,核心存储的变化被完全封装在类内部。
    • 同时,这种设计让对象大小可控:比如vector的对象本身大小固定(无论内部存储多少元素),既可以方便地放在栈上或作为其他对象的成员,又能动态扩容存储大量数据;而传统的具体类型(如固定大小的自定义数组)如果要调整存储能力,必须修改类型定义,进而导致所有依赖该类型的用户代码重新编译。

原文引用

其表示可以是私有的,仅能通过成员函数访问(如Vector;§2.3),但该表示是存在的。因此,如果表示发生任何重大变更,用户必须重新编译。这是让具体类型表现得与内置类型完全一致所付出的代价。对于那些不常变更、且局部变量能提供必要清晰度和效率的类型而言,这是可接受且往往是理想的。为提升灵活性,具体类型可将其表示的主要部分存储在自由存储区(dynamic memory,heap)中,并通过类对象自身存储的部分进行访问。这正是vector和string的实现方式;它们可被视为具有精心设计接口的资源句柄。

内容的提问来源于stack exchange,提问作者heretoinfinity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:56:10