出于好奇,我看了一下std :: array的LLVM实现,并注意到它是一个结构体.我看过的大多数其他STL容器(vector,queue,map)都是类.并且它作为结构出现在标准中,因此是故意的.
谁知道为什么会这样?
Jer*_*fin 10
从技术上讲,它既不是结构也不是类 - 它是一个模板.
std::array
必须是一个aggregate
.总而言之,这最终意味着它不能拥有任何私有 - 所以它也可以写成struct
(默认为使所有内容都公开)而不是a class
,(默认是将所有内容设为私有) .
如果你想,你可以把它写成class
:
template <...>
class array {
public:
// ...
Run Code Online (Sandbox Code Playgroud)
但是你需要把所有东西都公之于众,所以你可以struct
默认使用那样做.
归档时间: |
|
查看次数: |
420 次 |
最近记录: |