double Distance(Point & a, Point & b)doubledx=a.xPos-b.xPos:doubledy=a.yPos-b.yPos;sqrt(dx*dx+dy*dy);returnvoidmain()不采用友元如何解决?Pointp1(3, 5), p2(4, 6);cout<< Distance(pl, p2) <<endl;
double Distance( Point & a, Point & b) { double dx=a.xPos-b.xPos; double dy=a.yPos-b.yPos; return sqrt(dx*dx+dy*dy); } void main( ) { Point p1(3, 5), p2(4, 6); cout<< Distance(p1, p2) <<endl; } 不采用友元 如何解决?
类的成员函数作为另外一个类的友元4.2.2其他类的成员函数声明为一个类的友元函数,这个成员函数也称为友元成员。友元成员不仅可以访问自已所在类对象中的私有成员和公有成员,还可以访问friend声明语句所在类对象中的私有成员和公有成员,这样能使两个类相互合作完成某一任务例:将Aux类的函数addBudget声明为Budget类的友元函数
17 其他类的成员函数声明为一个类的友元函数,这 个成员函数也称为友元成员。 友元成员不仅可以访问自己所在类对象中的私有 成员和公有成员,还可以访问friend声明语句所在类对 象中的私有成员和公有成员,这样能使两个类相互合 作完成某一任务。 例:将Aux类的函数addBudget声明为Budget类的友元 函数。 4.2.2 类的成员函数作为另外一个类的友元
办公室预算子公司1预算辅助办公室预算公司总预算子公司2预算辅助办公室预算子公司3预算辅助办公室预算子公司4预算辅助办公室预算
公 司 总 预 算 办公室预算 子公司1预算 子公司2预算 子公司3预算 子公司4预算 辅助办公室预算 辅助办公室预算 辅助办公室预算 辅助办公室预算
classBudget;l/对Budget类超前使用说明classAux//Aux类的定义private:float auxBudget ;public:Aux() auxBudget=0;}void addBudget(float,Budget &);float getDivBudget() return auxBudget;
class Budget ; // 对Budget类超前使用说明 class Aux // Aux类的定义 { private: float auxBudget ; public: Aux( ) { auxBudget = 0 ; } void addBudget( float , Budget & ) ; float getDivBudget( ) { return auxBudget ; } } ;
class Budget l/Budget class declarationstatic float corpBudget;float divBudget;public:divBudget=O;BudgetOvoid addBudget(float B) divBudget +=B;corpBudget +=divBudget;float getDivBudget()return divBudget;float getCorpBudget() return corpBudget;static void mainOffice(float);friend void Aux::addBudget(float, Budget &)7
class Budget // Budget class declaration { static float corpBudget; float divBudget; public: Budget( ) { divBudget = 0; } void addBudget(float B) { divBudget += B; corpBudget += divBudget; } float getDivBudget( ) { return divBudget; } float getCorpBudget( ) { return corpBudget; } static void mainOffice( float ); friend void Aux::addBudget(float, Budget &); };