C++ template一些体悟(1)

时间:2023-03-09 15:09:17
C++ template一些体悟(1)
#include <iostream>

using namespace std;

template<typename T>
class testClass {
public:
static T _data;
}; template<typename T>
T testClass<T>::_data = ; int main(int argc, char **argv) {
cout << testClass<int>::_data << endl;
cout << testClass<char>::_data << endl; testClass<int> obji1, obji2;
testClass<char> objc1, objc2;
cout << obji1._data << endl;
cout << obji2._data << endl;
cout << objc1._data << endl;
cout << objc2._data << endl; obji1._data = ;
objc2._data = ;
cout << obji1._data << endl;
cout << obji2._data << endl;
cout << objc1._data << endl;
cout << objc2._data << endl;
testClass<unsigned int> objui;
cout << objui._data << endl;
objui._data=;
cout << objui._data << endl;
return ;
}

C++ template一些体悟(1)

可以看到每个T不同,程序都申请了一个静态变量。

单纯写了一个template class并没有任何用,只有使用到testClass<int>时,编译器才会帮助生成class testClass<int>(类似于帮忙写了这段代码),由编译器编译这段代码才会申请变量。

一开始写的时候以为是由template class申请静态变量空间的,还觉得static T _data类型必须指定。