考虑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函数以外的选择的主要内容,如果未能解决你的问题,请参考以下文章

virtual关键字

析构函数 声明为protected

C++ 类的多态一(virtual关键字--构造函数深刻理解)

绝不又一次定义继承而来的函数的缺省參数值

base class类virtual析构函数

c++ virtual总结