成員函式範本
成員樣板這個詞同時指成員函式樣板和巢狀類別樣板。 成員函式範本是屬於類別或類別範本成員的函式範本。
成員函式可以是數種內容中的函式樣板。 類別範本的所有函式都是泛型,但不稱為成員範本或成員函式範本。 如果這些成員函式採用自己的範本引數,則會將其視為成員函式範本。
範例:宣告成員函式範本
非範本類別或類別範本的成員函式範本會以其範本參數宣告為函式範本。
// member_function_templates.cpp
struct X
{
template <class T> void mf(T* t) {}
};
int main()
{
int i;
X* x = new X();
x->mf(&i);
}
範例:類別範本的成員函式範本
下列範例顯示類別範本的成員函式範本。
// member_function_templates2.cpp
template<typename T>
class X
{
public:
template<typename U>
void mf(const U &u)
{
}
};
int main()
{
}
範例:定義類別外部的成員範本
// defining_member_templates_outside_class.cpp
template<typename T>
class X
{
public:
template<typename U>
void mf(const U &u);
};
template<typename T> template <typename U>
void X<T>::mf(const U &u)
{
}
int main()
{
}
範例:範本化使用者定義轉換
不允許本機類別有成員範本。
成員函式範本不能是虛擬函式。 而且,當基類以與基類虛擬函式相同的名稱宣告時,它們就無法覆寫基類中的虛擬函式。
下列範例顯示樣板化的使用者定義轉換:
// templated_user_defined_conversions.cpp
template <class T>
struct S
{
template <class U> operator S<U>()
{
return S<U>();
}
};
int main()
{
S<int> s1;
S<long> s2 = s1; // Convert s1 using UDC and copy constructs S<long>.
}
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應