C++友元函數(shù)能是模板函數(shù)嗎

c++
小樊
81
2024-11-09 01:01:30

在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ù)(intdouble),并使用它們分別調(diào)用模板友元函數(shù)printValue。

0