我退出的原因是什么?

kam*_*kam 1 c++ templates

包括"stdafx.h"

#include<iostream.h>

template<class T>
class Sample
{
    public:
        Sample();
        static int i;



};
template<class T>
int Sample<T>::i = 0;
template<class T>
Sample<T>::Sample()
{
    i++;
    cout<<i;
}

void main()
{
    Sample<int>s1;
    Sample<float>s2;
    Sample<char>s3;
}
Run Code Online (Sandbox Code Playgroud)

输出:111

我退出的原因是什么?

Tyl*_*nry 7

输出111(而不是123)的原因是Sample<int>,Sample<float>并且Sample<char>是三种完全不同的类型,因此它们每个都有自己独立的静态变量i.

您有一个名为的模板Sample,每次使用不同的模板参数对其进行实例化时,它都会使用该模板根据模板动态创建新类.但是使用模板创建的类彼此之间没有关系,并且不共享静态信息.