在C++中,友元函數可以聲明為模板函數。友元函數是一種特殊的函數,它可以訪問類的私有和保護成員。模板函數是一種泛型函數,它可以根據不同的類型參數生成相應的函數實例。
以下是一個C++友元模板函數的示例:
#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類型參數調用模板友元函數
printValue<double>(obj); // 使用double類型參數調用模板友元函數
return 0;
}
在這個示例中,我們定義了一個名為MyClass
的類,它包含一個私有成員變量value_
。我們還定義了一個模板友元函數printValue
,它可以訪問MyClass
的私有成員value_
。在main
函數中,我們創建了兩個不同類型的參數(int
和double
),并使用它們分別調用模板友元函數printValue
。