草庐IT

templateMethod

全部标签

c++ - 当对象具有值语义时,在方法中内联虚函数

考虑以下带有模板方法设计模式的代码:classA{public:voidtemplateMethod(){doSomething();}private:virtualvoiddoSomething(){std::cout我想知道编译器是否能够在情况1和情况2中内联/取消虚拟化“doSomething()”成员函数。如果它为templateMethod()创建3段不同的二进制代码,这是可能的:一段没有内联,2段内联了A::doSomething()或B::doSomething()(在情况3中必须分别调用,1和2)你知道这个优化是否是标准所要求的,或者是否有任何编译器实现了它?我知道我可