下载首页下载分类最近更新排 行 榜国产软件国外软件汉化补丁本站论坛BT下载页
  • 设为首页
  • 收藏本站
  • 联系我们
您的位置:首页冲浪一族网络技巧 → 巧妙利用成员模板函数为类留下后门
巧妙利用成员模板函数为类留下后门
出处:互联网络 作者:佚名 日期:2007-5-1 0:01:52 人气: [ ]
   【编辑提示:本文内容仅供参考,切勿用于不当之处!】

  如果你的类需要扩展功能,除了修改源码之外,你也可以从这个类派生一个类来对这个类作扩充。比如有如下一个类。

class cls { public:   int fun( int a)   {     //一些处理     return 0;   } };

  类cls有一个函数fun能针对一个int型的数据进行一些必要的动作。现在假如,要对这个cls类进行功能扩充。让它能针对一个double型的数据进行一些动作。第一种扩充方法是修改类的源码如下:

class cls { public:   int fun( int a)   {     //一些处理     return 0;   }   int fun( double a)   {     // 一些处理     return 0;   } };

  经过对类cls源码的修改,cls现在有了针对的double功能了。可是这种改源码的方法。会影响到其它的使用到这个cls类的地方。为了降低这种影响,可以采用从cls类再派生新类的做法,如下:

class cls2: public cls { public:   int fun( double a)   {     //一些处理     return 0;   } };

  经过对派生,现在cls2这个类扩展了cls的功能。现在cls2可以针对int和double两种数据类型而做必要的处理了。可是这种通过派生新类的扩展,不能使以前就使用cls的用户直接从中受益。这些用户想要使用这个新扩展的功能,就必需修改自己的代码来,添加对cls2的适应。

  如果象上面的这种功能扩充,要是进行多几次的话,采用第一种方法,就会经历多次cls类的代码修改,采用第二种方法,就会产生多次派生过程。象cls3,cls4等等。而且采用第二种方法还有一个非常大的不足。那就是派生类不能访问基类的私有成员。假如扩充出来的功能在进行处理时要对cls中的一些私有成员有所依赖,就不能采用第二种扩展方法。

  从以上的弊端来看,这两种功能扩展的方法都不是好方法。

上一页 [1] [2] 下一页
评论人 评论内容摘要(共 0 条,查看完整内容) 得分 0 发表时间
关于本站 | 广告服务 | 版权声明 | 联系我们 | | 联系我 | 交流群:1361692 7710545
本站部分带宽由:华夏名网武汉IDC数据中心 赞助[排名不分先后] Powered By 零度软件园
本站软件均来源于网络,仅供学习所用。若侵犯了你的权益,请立即通知我们,我们将第一时间删除!