use*_*137 12 c++ static templates member
通常,对于具有静态成员/对象的类的每个实例,一个类的静态成员/对象是相同的.无论如何,如果静态对象是模板类的一部分,还取决于模板参数?例如,像这样:
template<class T>
class A{
public:
static myObject<T> obj;
}
Run Code Online (Sandbox Code Playgroud)
如果我将A的一个对象int
和另一个对象构建为float
,我想obj
每种类型会有两个,一个?
如果我创建A的多个对象作为类型int
和多个float
s,它仍然是两个obj
实例,因为我只使用两种不同的类型?
Yac*_*oby 20
每个不同的模板初始化的静态成员是不同的.这是因为每个模板初始化都是由编译器在第一次遇到模板的特定初始化时生成的不同类.
此代码显示静态成员变量不同的事实:
#include <iostream>
template <class T> class Foo {
public:
static int bar;
};
template <class T>
int Foo<T>::bar;
int main(int argc, char* argv[]) {
Foo<int>::bar = 1;
Foo<char>::bar = 2;
std::cout << Foo<int>::bar << "," << Foo<char>::bar;
}
Run Code Online (Sandbox Code Playgroud)
结果如何
1,2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15253 次 |
最近记录: |