網頁

2022/8/17

C++ friend函式用法

C++的friend函式用法如下。


在類別函式前加上friend關鍵字則為friend函式。Friend函式直接被類別外部函式調用,且可直接存取所屬類別的private及protected的成員。

例如下面的類別Car的函式CompareSpeed(Car& car1, Car& car2)前有friend則為friend函式,可在非成員函式main()中被調用,且函式內可直接存取型別為Car的傳入參數的private的成員屬性speed

main.cpp

#include <iostream>
#include <string>
using namespace std;

class Car {
    private:
        // 屬性 attributes
        string model;
        int speed;

    public:
        // 建構式 constructor
        Car(string model, int speed) : model(model), speed(speed) {}

        // 方法 methods
        string GetModel() { return model; }

        // friend函式
        friend int CompareSpeed(Car& car1, Car& car2) {
            return car1.speed - car2.speed;
        }
};

int main() {
    Car car1 = {"Tesla Model S", 100};
    Car car2 = {"MAZDA CX-30", 80};

    cout << CompareSpeed(car1, car2) << endl; // 20

    return 0;
}


沒有留言:

張貼留言