首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

全局函数还是成员函数?解决方案

2012-03-07 
全局函数还是成员函数?classA{public:friendconstADistance(constA&x,constA&y)}classA{public:constADi

全局函数还是成员函数?
class   A
{
public:
friend   const   A   Distance(const   A&   x,   const   A&   y);
};

class   A
{
public:
const   A   Distance(const   A&x);
};

这两种方式用哪种比较好?大家喜欢用哪种方式?
刚开始设计类的时候,可能觉得后者比较好一些,成员函数比较符合面向对象的思想
但到了后来,类的数目变得很多了,需要很多个Distance函数的时候,第二种方式就感觉不理想了
比如几个几何类:点,圆,线段,多边形,等等,两两之间都有Distance函数,那如果分散定义在各个类里,就感觉结构上不太好
反而定义一个全局的重载函数感觉更好一些,更方便别人作为库函数调用
这种情况是否应该放弃成员函数的调用方式呢?

即使没有那么多的重载,在有两个不同类对象参数的时候,该选用全局函数还是成员函数?

[解决办法]
const A Distance(const A&x);
你咋返回A呢?按理说不是该返回int或者float啥的才合逻辑啊
[解决办法]
是否可以定义一个接口来做的,也就是将distance与具体的类进行分离。
[解决办法]
那为什么不用虚函数呢?
[解决办法]
我觉得还是要从实用性角度来分析,
如果说设计成成员函数就已经可以满足一切需要的话,
还是要避免使用友元为好.
毕竟友元函数破坏了封装性.


像楼主说的那种情况,
多个类都要有一个共同的函数的话,
我想最好可以从整个程序的设计角度来加以研究,
把这些点,线,圆之类的图形的共性提取出来,
做成一个抽象类,
提供共用的函数来做为接口


如果有必要,
整个类的关系结构也许都要重新设计

热点排行