我是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
有解释吗?
答案 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;
答案 1 :(得分:2)
这意味着NameClass
是 templatised类,即依赖于模板参数的行为的多态性。
typedef NameClass<CryptoPP::AES> CryptAES;
在英语中,上面说的&#34;从现在开始,在这个范围内,CryptAES是NameClass的另一个名称,当用CryptoPP :: AES作为模板参数进行实例化时,#34;。