考虑virtual函数以外的选择
Posted 八叶一刀·无仞剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考虑virtual函数以外的选择相关的知识,希望对你有一定的参考价值。
在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函数以外的选择的主要内容,如果未能解决你的问题,请参考以下文章