當我閱讀代碼時:
DefaultSPStorage() : pointee_(Default()) {}
DefaultSPStorage(const DefaultSPStorage&) : pointee_(nullptr) {}
template<class U>
DefaultSPStorage(const DefaultSPStorage<U>) : pointee_(nullptr) {}
explicit DefaultSPStorage(const StoredType& p) : pointee_(p) {}
我對第三個模板化的 c'tor 感到困惑。
如果有人能啟發我它的目的,我將不勝感激。
uj5u.com熱心網友回復:
DefaultSPStorage() 是一個模板類,例如:
template<typename T>
class DefaultSPStorage
{
...
};
第三個模板化建構式采用一個DefaultSPStorage<U>實體,其模板引數可以與DefaultSPStorage正在構造的實體不同。
IOW,這允許DefaultSPStorage<A>使用 aDefaultSPStorage<B>作為輸入構造一個,例如:
DefaultSPStorage<short> a;
DefaultSPStorage<int> b(a);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342882.html
上一篇:在模板<classIt>函式中,It是一個迭代器,我可以讓It::value_type為vector::iterators和array::iterators作業嗎?
