代码之家  ›  专栏  ›  技术社区  ›  xtensa1408

在class〔closed〕之后使用typedef ClassName<>

  •  2
  • xtensa1408  · 技术社区  · 10 年前

    我是C++世界的新手,我不知道使用这种结构时会发生什么:

    template <typename T>
       class NameClass{
    .........
    
    };
    typedef NameClass<CryptoPP::AES> CryptAES;
    //!Typedef for the AES Encryption\Decryption
    typedef NameClass<CryptoPP::Blowfish> CryptBlowFish;
    //!Typedef for BlowFish Encryption\Decryption
    

    有什么解释吗?

    2 回复  |  直到 10 年前
        1
  •  3
  •   4pie0    10 年前

    也很可能

    template< classT > template <typename T> 在上面 class NameClass 这意味着NameClass是一个模板,由它使用的加密类型参数化,通过 T .

    了解模板 here .

    typedef是C++中的一个关键字。它的目的是简化复杂的名称。在您的示例中

    NameClass<CryptoPP::Blowfish>
    

    可以通过以下方式使用 CryptBlowFish

    因为它被归类为

    typedef NameClass<CryptoPP::Blowfish> CryptBlowFish;
    

    之前所以

    CryptBlowFish cbf;
    

    与相同

    NameClass<CryptoPP::Blowfish> cbf;
    

    http://en.wikipedia.org/wiki/Typedef

        2
  •  2
  •   TartanLlama    10 年前

    这意味着 NameClass 是一个 模板化类 即,依赖于模板参数的行为是多态的。

    typedef NameClass<CryptoPP::AES> CryptAES;
    

    在英语中,上面说“从现在起,在这个范围内,CryptAES是NameClass的另一个名称,当使用CryptoPP::AES作为模板参数实例化时”。