gpt4 book ai didi

c++ - 每个实例不同的模板类的静态 constexpr 成员?

转载 作者:行者123 更新时间:2023-12-03 06:52:40 26 4
gpt4 key购买 nike

我的印象是类的静态成员在该类的所有实例之间共享它们的值。我的理解似乎缺乏,也许是因为包含模板或 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> 的所有实例;但是这两个类不会共享一个共同的值。

关于c++ - 每个实例不同的模板类的静态 constexpr 成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64451647/

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