C++(OOP)友元
阿新 • • 發佈:2020-12-18
類的友元函式
普通函式無法使用類的私有成員
友元函式可以使用類的私有成員
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(int ag, std::string nm):name(nm),age(ag){};
/* 定義友元函式 */
/* 友元函式可以呼叫類的私有變數 */
friend int getAge(Person &);
private:
int age;
std::string name;
};
/* 友元函式 */
int getAge(Person &person)
{
return person.age;
}
int main()
{
Person a(18, "bill");
cout << "test" << endl;
return 0;
}
友元類
友元類可以使用類的私有成員
#include <iostream>
using namespace std;
class Dog
{
public:
friend class Cat;
Dog(int legs=4, int eyes=2):legs(legs),eyes(eyes){};
void run(){
cout << "running" << endl;
}
private:
int legs;
int eyes;
};
class Cat
{
public:
/* 友元類 */
Cat(){};
void observer(Dog &dog){
this->legs = dog.legs;
this->eyes = dog.eyes;
}
void get_info(){
cout << this-> legs << endl;
cout << this->eyes << endl;
}
private:
int legs;
int eyes;
};
int main()
{
Dog wangcai;
Cat timi;
timi.observer(wangcai);
timi.get_info();
return 0;
}
友元類成員函式
簡單介紹 用起來比較麻煩
class Person2
{
public:
void test()
{
cout << "test" << endl;
}
};
class Person1
{
public:
// 呼叫友元類的函式
friend void Person2::test();
};
如有錯誤,請批評指正