在C++中,友元函數(shù)可以聲明為模板函數(shù)。友元函數(shù)是一種特殊的函數(shù),它可以訪(fǎng)問(wèn)類(lèi)的私有和保護(hù)成員。模板函數(shù)是一種泛型函數(shù),它可以根據(jù)不同的類(lèi)型參數(shù)生成相應(yīng)的函數(shù)實(shí)例。
以下是一個(gè)C++友元模板函數(shù)的示例:
#include <iostream>
class MyClass {
public:
MyClass(int value) : value_(value) {}
template <typename T>
friend void printValue(const MyClass& obj);
private:
int value_;
};
template <typename T>
void printValue(const MyClass& obj) {
std::cout << "Value: " << obj.value_ << std::endl;
}
int main() {
MyClass obj(42);
printValue<int>(obj); // 使用int類(lèi)型參數(shù)調(diào)用模板友元函數(shù)
printValue<double>(obj); // 使用double類(lèi)型參數(shù)調(diào)用模板友元函數(shù)
return 0;
}
在這個(gè)示例中,我們定義了一個(gè)名為MyClass
的類(lèi),它包含一個(gè)私有成員變量value_
。我們還定義了一個(gè)模板友元函數(shù)printValue
,它可以訪(fǎng)問(wèn)MyClass
的私有成員value_
。在main
函數(shù)中,我們創(chuàng)建了兩個(gè)不同類(lèi)型的參數(shù)(int
和double
),并使用它們分別調(diào)用模板友元函數(shù)printValue
。