zoukankan      html  css  js  c++  java
  • Effective C++ .44 typename和class的不同

    在C++模板中的类型参数一般可以使用typename和class,两者没有什么不同。但是typename比class多项功能:

    “任何时候当你想要在template中指涉一个嵌套从属类型名称,就必须在其前面加上关键字typename”

    因为C++默认情况下把属性都作为值来看待而不是类型。

    #include <iostream>
    #include <cstdlib>
    
    class Integer {
    public:
        typedef int value_type;
    };
    
    class Double {
    public:
        typedef double value_type;
    };
    
    template<class DataType>
    class Storage {
    public:
        typename DataType::value_type data;
    };
    
    int main() {
        Storage<Integer> s;
        
        s.data = 3.4/2;
        
        std::cout<<s.data<<std::endl;
        
        return 0;
    }
  • 相关阅读:
    Java注解
    java反射简单入门
    java泛型反射
    BeanUtils.populate的作用
    适配器模式
    原型模式
    抽象工厂模式
    工厂方法模式
    建造者模式
    单例模式
  • 原文地址:https://www.cnblogs.com/lailailai/p/4180097.html
Copyright © 2011-2022 走看看