首頁 >後端開發 >C++ >C++ 友元函式如何存取私有成員?

C++ 友元函式如何存取私有成員?

WBOY
WBOY原創
2024-04-15 17:27:02719瀏覽

C 中友元函數存取私有成員的方法有兩種:在類別內宣告友元函數。宣告一個類別作為友元類,該類別中所有的成員函數都可以存取另一個類別的私有成員。

C++ 友元函数如何访问私有成员?

C 友元函數存取私有成員的方法

友元函數是一種在類別外部定義,但可以訪問類別私有成員的函數。有兩種方法可以實作友元函數對私有成員的存取:

1. 宣告友元函數

在類別內宣告友元函數,語法如下:

class ClassName {
public:
  // 类成员...

  // 声明友元函数
  friend void friend_function();
};

這樣,宣告的友元函數就可以存取該類別的私有成員。

2. 宣告友元類別

宣告一個類別作為友元類,該類別中所有的成員函數都可以存取另一個類別的私有成員。語法如下:

class ClassName1 {
public:
  // 类成员...

  // 声明友元类
  friend class ClassName2;
};

所有宣告在 ClassName2 中的成員函數都可以存取 ClassName1 的私有成員。

實戰案例

考慮以下C 程式碼:

class Person {
private:
  int age;
  string name;

public:
  // 友元函数
  friend void print_person_info(const Person& person);

  // 访问私有成员的友元函数
  void print_info() const {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

// 友元函数外部分类的定义
void print_person_info(const Person& person) {
  cout << "Name: " << person.name << endl;
  cout << "Age: " << person.age << endl;
}

int main() {
  Person person;
  person.name = "John";
  person.age = 30;

  person.print_info();
  print_person_info(person);

  return 0;
}

在這個範例中,print_person_info 函數是友元函數,它可以存取Person 類別的私有成員。在 Person 類別中,print_info 函數也存取私有成員,它使用了友元函數宣告。

運行以上程式碼將輸出:

Name: John
Age: 30
Name: John
Age: 30

以上是C++ 友元函式如何存取私有成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn