使用typedef ClassName< >下课以后

时间:2014-09-10 11:25:18

标签: c++ visual-c++ c++11 crypto++

我是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 个答案:

答案 0 :(得分:3)

很有可能

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

答案 1 :(得分:2)

这意味着NameClass templatised类,即依赖于模板参数的行为的多态性。

typedef NameClass<CryptoPP::AES> CryptAES;

在英语中,上面说的&#34;从现在开始,在这个范围内,CryptAES是NameClass的另一个名称,当用CryptoPP :: AES作为模板参数进行实例化时,#34;。