91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++友元函數如何處理繼承關系

c++
小樊
82
2024-11-09 01:04:29
欄目: 編程語言

在C++中,友元函數(friend function)是一種非成員函數,它可以訪問類的私有(private)和保護(protected)成員。在處理繼承關系時,友元函數可以訪問基類(base class)和派生類(derived class)的私有和保護成員。

以下是一個簡單的例子,展示了如何在繼承關系中處理友元函數:

#include <iostream>
using namespace std;

class Base {
public:
    Base(int value) : value_(value) {}

    // 聲明友元函數
    friend void printValue(const Base& obj);

private:
    int value_;
};

// 定義友元函數
void printValue(const Base& obj) {
    cout << "Base value: " << obj.value_ << endl;
}

class Derived : public Base {
public:
    Derived(int value, int derivedValue) : Base(value), derivedValue_(derivedValue) {}

    // 聲明友元函數
    friend void printDerivedValue(const Derived& obj);

private:
    int derivedValue_;
};

// 定義友元函數
void printDerivedValue(const Derived& obj) {
    cout << "Derived value: " << obj.derivedValue_ << endl;
}

int main() {
    Base base(10);
    Derived derived(20, 30);

    // 友元函數可以訪問基類和派生類的私有成員
    printValue(base); // 輸出:Base value: 10
    printValue(derived); // 輸出:Base value: 20

    printDerivedValue(derived); // 輸出:Derived value: 30

    return 0;
}

在這個例子中,我們有一個基類Base和一個派生類Derived。基類有一個私有成員value_,派生類有一個私有成員derivedValue_。我們聲明了兩個友元函數printValueprintDerivedValue,它們分別用于打印基類和派生類的值。

main函數中,我們創建了基類和派生類的對象,并調用了這兩個友元函數。可以看到,友元函數可以訪問基類和派生類的私有成員。這是因為友元函數不是類的成員函數,所以它不受類的訪問控制限制。

0
资讯| 尤溪县| 西林县| 望城县| 焦作市| 洪湖市| 金山区| 中西区| 会同县| 穆棱市| 博白县| 林西县| 耒阳市| 文山县| 民和| 杭锦旗| 罗定市| 吉安市| 琼海市| 邯郸县| 扶余县| 汶上县| 当阳市| 奉节县| 荃湾区| 澄城县| 西和县| 徐闻县| 孝昌县| 磐安县| 海城市| 文昌市| 永嘉县| 龙胜| 兴义市| 砀山县| 德惠市| 若尔盖县| 连云港市| 庄浪县| 松江区|