double distance( point a, point b) double dx=a.xPos-bxPos double dy=a. yPos-b. yPos; return sqrt(dx*dx+dy *dy); void main() 不采用友元 如何解决 Point pI(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; } 不采用友元 如何解决?
422类的成员函数作为另外一个类的友元 其他类的成员函数声明为一个类的友元函数,这 个成员函数也称为友元成员 友元成员不仅可以访问自己所在类对象中的私有 成员和公有成员,还可以访问 friend声明语句所在类对 象中的私有成员和公有成员,这样能使两个类相互合 作完成某一任务。 例:将Aux类的函数 add budget声明为 Budget类的友元 函数
17 其他类的成员函数声明为一个类的友元函数,这 个成员函数也称为友元成员。 友元成员不仅可以访问自己所在类对象中的私有 成员和公有成员,还可以访问friend声明语句所在类对 象中的私有成员和公有成员,这样能使两个类相互合 作完成某一任务。 例:将Aux类的函数addBudget声明为Budget类的友元 函数。 4.2.2 类的成员函数作为另外一个类的友元
办公室预算 子公司1预算辅助办公室预算 公司总预算 子公司2预算!助办公室预算 子公司3预算辅助办公室预算 子公司4预算铺助办公室预算
公 司 总 预 算 办公室预算 子公司1预算 子公司2预算 子公司3预算 子公司4预算 辅助办公室预算 辅助办公室预算 辅助办公室预算 辅助办公室预算
class Budget;∥对 Budget类超前使用说明 class aux∥Aux类的定义 private. float aux Budget public: Auxoi aux Budget=0; void addBudget( float, Budget &)i float getDiv Budgett return aux Budget 3
class Budget ; // 对Budget类超前使用说明 class Aux // Aux类的定义 { private: float auxBudget ; public: Aux( ) { auxBudget = 0 ; } void addBudget( float , Budget & ) ; float getDivBudget( ) { return auxBudget ; } } ;
class budget / Budget class declaration static float corp budget; float div budget; public Budget div budget =0; void addBudget(float B) i div budget + B; corp Budget + div budget float getDiv Budget return div budget; j float getCorp Budget(i return corp Budget; j static void main office( float ) friend void Aux:: addBudget(float, Budget &)
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 &); };