gpt4 book ai didi

c++ - CRTP - 如何从派生类调用方法的基类实现?

转载 作者:行者123 更新时间:2023-11-28 06:30:25 31 4
gpt4 key购买 nike

我目前正在使用 C++ 模板处理 CRTP 模式。在摆弄 visual studio 时,我发现了几种派生类可以调用函数的基类实现的方式/方法。下面是我正在使用的代码以及 3 行注释掉的代码,显示了如何从派生类调用函数的基类实现。使用一种方法比使用另一种方法有好处吗?有什么不同吗?最常用的方法是什么?

template<typename T>
struct ConsoleApplication
{

ConsoleApplication()
{
auto that = reinterpret_cast<T*>(this);
that->ShowApplicationStartupMsg();
}



void ShowApplicationStartupMsg()
{

}
};


struct PortMonitorConsoleApplication : ConsoleApplication < PortMonitorConsoleApplication >
{
void ShowApplicationStartupMsg()
{
// __super::ShowApplicationStartupMsg();
// this->ShowApplicationStartupMsg();
// ConsoleApplication::ShowApplicationStartupMsg();
}
};

最佳答案

我见过的首选方法是使用这个:

ConsoleApplication::ShowApplicationStartupMsg();

这很好,因为它非常清楚您要做什么,以及被调用的方法来自哪个父类(如果您不是父类本身是派生类,则特别有用)。

关于c++ - CRTP - 如何从派生类调用方法的基类实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695701/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com