C++ 简单问题..

来源:百度知道 编辑:UC知道 时间:2024/05/05 17:49:24
我刚学友元,不是很会用,以下是我做的类,还能怎样改进吗?

#include<iostream>
#include<conio.h>
using namespace std;

class Boat;
class Car {
int size;
public:
void setSize(int j) { size = j; }
int getSize() { return size; }
friend int leisure(int time, Car& aobj, Boat& bobj);
};
class Boat {
int size;
public:
void setSize(int j) {size = j; }
int getSize() { return size; }
friend int leisure(int time, Car& aobj, Boat& bobj);
};
int leisure(int time, Car& aobj, Boat& bobj){
return time * aobj.size * bobj.size;
}
int main() {
Car c1;
c1.setSize(2);
Boat b1;
b1.setSize(3);
cout<<leisure(5, c1, b1);
getch();
}

友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,但矛盾的是,即使是最大限度的保护,同样也破坏了类的封装特性,这即是友元的缺点
你的程序已经实现了外部函数访问类保护数据

恰当地应用友元,不但不会破坏封装性,反而会加强它。
将一些函数设置成友元也不会影响类的封装特性。友元函数和类的成员函数一起,构成了类的封装边界。换句话说,友元函数对于封装带来的影响,就如同成员函数的影响一样.