• 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可怕
  • 相关阅读:
    LinkedHashMap源码学习
    HashMap源码学习
    Java中"或"运算与"与"运算快慢的三三两两
    Java源码记录
    SpringBoot系列随笔
    分布式事物
    分布式事物
    部署spring boot + Vue遇到的坑(权限、刷新404、跨域、内存)
    一次使用存储过程游标遇到的坑
    UML简单介绍—类图详解
  • 原文地址:https://www.cnblogs.com/Jacket-K/p/9261811.html
Copyright © 2020-2023  润新知