#include<iostream>
#include<string>
using namespace std;
//全局函数做友元
class Card
{
//使用friend关键字----relatives全局函数是Card的友元,可以访问Card中的私有成员
friend void relatives(Card * card);
private:
int m_account;//类的私有变量
public:
string m_bank;//类的公有变量
Card()
{
this->m_bank = "Construction Bank";
this->m_account = 6666;
}
};
//全局函数
void relatives(Card * card)
{
cout << "relatives : bank -> " << card->m_bank << endl;//公有
cout << "relatives : account -> " << card->m_account << endl;//私有
}
int main()
{
Card c1;
relatives(&c1);
return 0;
}
#include<iostream>
#include<string>
using namespace std;
//类做友元
class Card
{
//使用friend关键字----GoodCard类是Card类的友元,可以访问Card类中的私有成员
friend class GoodCard;
private:
int m_account;//类的私有变量
public:
string m_bank;//类的公有变量
Card()
{
this->m_bank = "Construction Bank";
this->m_account = 6666;
}
};
class GoodCard
{
public:
GoodCard();
void visit();
private:
//创建一个指针
Card * card;
};
GoodCard::GoodCard()
{
//创建一个Card对象
card = new Card;
}
void GoodCard::visit()
{
cout << "GoodCard : bank -> " << card->m_bank << endl;//公有
cout << "GoodCard : account -> " << card->m_account << endl;//私有
}
int main()
{
GoodCard c1;
c1.visit();
return 0;
}
成员函数做友元#include<iostream>
#include<string>
using namespace std;
//类做友元
//必须将先定义的类的成员函数作为后定义类的友元函数,调换顺序会出现语法错误
class Card;//类-----由于没有定义,需要先声明
class GoodCard//定义的类的成员函数-------先于定义类定义
{
public:
GoodCard();
void visit1();//让visit1函数可以访问Card中私有成员
void visit2();//让visit2函数不可以访问Card中私有成员
private:
//创建一个指针
Card * card;
};
class Card
{
//使用friend关键字----GoodCard类中visit1函数是Card类的友元,可以访问Card类中的私有成员
friend void GoodCard::visit1();
private:
int m_account;//类的私有变量
public:
string m_bank;//类的公有变量
Card()
{
this->m_bank = "Construction Bank";
this->m_account = 6666;
}
};
//这是定义类的成员函数的类,执行语句的时候会产生错误
/*class GoodCard
{
public:
GoodCard();
void visit1();//让visit1函数可以访问Card中私有成员
void visit2();//让visit2函数不可以访问Card中私有成员
private:
//创建一个指针
Card * card;
};
*/
GoodCard::GoodCard()
{
//创建一个Card对象
card = new Card;
}
void GoodCard::visit1()
{
cout << "-------------visit1函数---------------" << endl;
cout << "GoodCard : bank -> " << card->m_bank << endl;//公有---可以访问
cout << "GoodCard : account -> " << card->m_account << endl;//私有----可以访问
}
void GoodCard::visit2()
{
cout << "------------visit2函数---------------" << endl;
cout << "GoodCard : bank -> " << card->m_bank << endl;//公有----可以访问
cout << "GoodCard : account -> " << card->m_account << endl;//私有----不可以访问
}
int main()
{
GoodCard h1;
h1.visit1();
h1.visit2();
return 0;
}
渣渣一个