zoukankan      html  css  js  c++  java
  • C++ template一些体悟(1)

    #include <iostream>
    
    using namespace std;
    
    template<typename T>
    class testClass {
    public:
        static T _data;
    };
    
    template<typename T>
    T testClass<T>::_data = 1;
    
    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 = 3;
        objc2._data = 4;
        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=5;
        cout << objui._data << endl;
        return 0;
    }

     

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

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

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

    少壮不识cpp,老大方知cpp可怕
  • 相关阅读:
    竞赛题解
    学习笔记
    竞赛题解
    学习笔记
    竞赛题解
    竞赛题解
    竞赛题解
    「链接」原博客链接
    「杂录」THUWC 2020 游记
    「杂录」CSP-S 2019 爆炸记&题解
  • 原文地址:https://www.cnblogs.com/Jacket-K/p/9261811.html
Copyright © 2011-2022 走看看