码迷,mamicode.com
首页 > 其他好文 > 详细

考虑virtual函数以外的选择

时间:2016-12-25 20:39:48      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:interface   call   nbsp   不同的   成员变量   callable   strategy   相同   接受   

在C++中,有四种选择可以替代virtual函数的功能:

1.non-virtual interface(NVI)手法,这是一种template method模式。它以public non-virtual成员函数包含较低访问性的virtual函数。对于子类而言,子类只需重定义私有的virtual函数即可。

2.将virtual函数替换为“函数指针成员变量”,这是Strategy模式的一种表现形式。这种方案的优点在于,将类和行为分离(比如相同的类的不同对象可以具有不同的行为);缺点在于,非成员函数无法访问class的non-public成员。

3.利用tr1::function,它和方法2基本一样,除了可以接受任何的可调用物(callable entities),包括函数子、成员函数等。

4.利用传统的Strategy模式来做。

 

考虑virtual函数以外的选择

标签:interface   call   nbsp   不同的   成员变量   callable   strategy   相同   接受   

原文地址:http://www.cnblogs.com/wickedpriest/p/6220289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!