c++ - 每个实例不同的模板类的静态 constexpr 成员?
问题描述
我的印象是一个类的静态成员在该类的所有实例之间共享它们的值。不过,我的理解似乎有所欠缺,可能是因为包含模板或constexpr
在此示例中:
#include <iostream>
#include <array>
template <typename T, std::size_t maxSize>
class Foo
{
public:
unsigned int getLen() {
return containerLen;
}
private:
static constexpr std::size_t containerLen = maxSize + 1;
std::array<T, containerLen> arr;
};
int main()
{
Foo<int, 10> foo1;
std::cout << foo1.getLen() << std::endl;
Foo<int, 12> foo2;
std::cout << foo2.getLen() << std::endl;
std::cout << foo1.getLen() << std::endl;
return 0;
}
这给出了以下输出:
11
13
11
我可能遗漏了一些明显的东西,但是是什么允许每个实例Foo
具有不同的值containerLen
?
解决方案
Foo<int, 10>
并且Foo<int, 12>
是不同的类- 它们只是共享相同的模板。的所有实例Foo<int, 10>
将共享相同containerLen
的 ; 的所有实例Foo<int, 12>
。但是这两个类不会共享一个共同的价值。
推荐阅读
- python - 将当前登录的用户分配为模型字段的默认值
- php - 用随机值填充数组,然后计算它们
- java - 调试动态代理创建会改变调用处理程序状态
- c++ - 在模板参数包上使用类型特征?
- android - Kotlin - Firebase - 将 Uri 保存到用户的文件夹图像不断保存错误的 Uri
- javascript - 如何使用 babel legacy 装饰器
- qt - 将一组 QML 小部件居中而不更改它们的相对对齐方式
- javascript - 查看字符串的结尾是否匹配
- concurrency - 了解希尔泽理发店问题的解决方案
- python - Seaborn Catplot:显示线图