1. 程式人生 > 其它 >C++(OOP)友元

C++(OOP)友元

技術標籤:C++c++

類的友元函式

普通函式無法使用類的私有成員
友元函式可以使用類的私有成員

#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();	
};

如有錯誤,請批評指正