2013我国中小企业接入互联网和网站建设情况,深圳全屋整装哪家公司好,index.html网站怎么做,火速网站建设友元
友元分为#xff1a;友元函数和友元类 友元提供了一种突破封装的方式#xff0c;有时提供了便利。但是友元会增加耦合度#xff0c;破坏了封装#xff0c;所以友元不宜多 用。
全局函数做友元函数 全局函数写到类中做声明 并且最前面写关键字 friend 友元函数可访问…友元
友元分为友元函数和友元类 友元提供了一种突破封装的方式有时提供了便利。但是友元会增加耦合度破坏了封装所以友元不宜多 用。
全局函数做友元函数 全局函数写到类中做声明 并且最前面写关键字 friend 友元函数可访问类的私有成员但不是类的成员函数 友元函数不能用const修饰 友元函数可以在类定义的任何地方声明不受类访问限定符限制 一个函数可以是多个类的友元函数 友元函数的调用与普通函数的调用和原理相同 #includeiostream#includestringusing namespace std;class Building{//让全局好基友函数变为我的好朋友 友元函数friend void goodGay(Building *building);public:Building(){this-m_SittingRoom 客厅;this-m_BedRoom 卧室;}//客厅 卧室public:string m_SittingRoom;//客厅private:string m_BedRoom;//卧室};//全局函数 好基友void goodGay(Building *building){cout 好基友正在访问 building-m_SittingRoom endl;cout 好基友正在访问 building-m_BedRoom endl;}//友元函数的目的访问类中的私有成员属性void test01(){Building *buildingnew Building;goodGay(building);}int main(){test01();system(pause);return 0;}类作为友元类
友元关系不能被继承友元关系是单向的类A是类B的朋友但类B不一定是类A的朋友。友元关系不具有传递性类B是类A的朋友类C是类B的朋友但类C不一定是类A的朋友
#include #include using namespace std;
class Building;class goodGay
{public:goodGay();void visit();private:Building * building;
};class Building
{//让好基友类 作为Building的好朋友friend class goodGay;
public:Building();public:string m_SiteingRoom;//客厅
private:string m_BedRoom;//卧室
};goodGay::goodGay()
{building new Building;
}void goodGay::visit()
{cout 好基友正在访问 this-building-m_SiteingRoom endl;cout 好基友正在访问 this-building-m_BedRoom endl;
}Building::Building()
{this-m_SiteingRoom 客厅;this-m_BedRoom 卧室;}void test01()
{goodGay gg;gg.visit();
}int main()
{test01();system(pause);return 0;
}成员函数作为友元函数 #includeiostream#includestringusing namespace std;//只让visit可以作为Buildingde的好朋友visit2不可以访问私有属性class Building;class goodGay{public:goodGay();void visit();void visit2();private:Building * building;};class Building{//让成员函数visit作为友元函数friend void goodGay:: visit();public:Building();public:string m_SiteingRoom;//客厅private:string m_BedRoom;//卧室};goodGay::goodGay(){building new Building;}void goodGay::visit(){cout 好基友正在访问 this-building-m_SiteingRoom endl;cout 好基友正在访问 this-building-m_BedRoom endl;}void goodGay::visit2(){cout 好基友正在访问 this-building-m_SiteingRoom endl;//cout 好基友正在访问 this-building-m_BedRoom endl;}Building::Building(){this-m_SiteingRoom 客厅;this-m_BedRoom 卧室;}void test01(){goodGay gg;gg.visit();gg.visit2();}int main(){test01();system(pause);return 0;}