Bjarne Stroustroup 提到的具体类型的灵活性是什么?

问题描述 投票:0回答:1

A Tour of C++第三版的Chapter 5.2中,Bjarne 写了关于具体类型的内容。我不明白什么是灵活性。

  • 他指的是具体类中指针的使用吗?
  • 灵活性是指当堆中对象的定义发生变化时,由于指针大小仍然相同而无需重新编译吗?

该表示可以是私有的并且只能通过 成员函数(如 Vector;第 2.3 节),但它是存在的。 因此,如果代表性发生任何重大变化, 用户必须重新编译。这是拥有混凝土所付出的代价 类型的行为与内置类型完全相同。对于不改变的类型 通常,局部变量提供了急需的清晰度和 效率,这是可以接受的并且通常是理想的。 增加 灵活性,具体类型可以保留其主要部分 自由存储(动态内存、堆) 上的表示和访问 它们通过存储在类对象本身中的部分来实现。这就是 矢量和字符串的实现方式;他们可以被考虑 具有精心设计的接口的资源句柄。

c++ class heap
1个回答
0
投票

我认为这两个问题的答案都是肯定的。

任何依赖于类实现设计的复杂数据都应该存储在堆上。所以

std::vector
可以实现为

template <type T>
class vector {
private:
    vector_implementation<T>* data;
...
}

然后

vector
的所有方法只需调用
vector_implementation
中对应的方法即可,例如

void vector<T>::push_back(T val) {
    data->push_back(val);
}

如果需要更改实现,则更改

vector_implementation
,但使用
std::vector
的代码不需要重新编译,因为该结构不需要任何更改。

© www.soinside.com 2019 - 2024. All rights reserved.