gpt4 book ai didi

c++ - 你会选择什么?虚函数、模板还是分支?

转载 作者:行者123 更新时间:2023-11-28 03:42:31 24 4
gpt4 key购买 nike

<分区>

我遇到了一个 C++ 设计问题,要在虚函数、模板和分支之间进行选择。三种实现如下所示。我最终选择了第二种实现,它看起来很棘手,但对于低延迟设计来说性能最佳。

虚函数实现:

class Channel : public BaseChannel
{
void packet(...) { for (...) message(...); }
virtual void message(...)=0;
};

class ChannelA : public Channel
{
struct Header {...}
void message(...) { ... }
}
class ChannelB : public Channel
{
struct Header {...}
void message(...) { ... }
}

模板实现:

template <typename TImpl>
class Channel : public BaseChannel
{
void packet(...) { for (...) message(...); }
void message(...);
};

class ChannelA : public Channel<ChannelA>
{
struct Header {...}
void message(...) { ... }
}
class ChannelB : public Channel<ChannelB>
{
struct Header {...}
void message(...) { ... }
}
template <typename TImpl>
inline void Channel<TImpl>::message(...) { static_cast<TImpl*>(this)->message(); }

分支实现:

class Channel : public BaseChannel
{
void packet(...) { for (...) message(...); }
struct HeaderA {...}
struct HeaderB {...}
void message(...)
{
if (isHeaderA(...)) messageA(...);
else if (isHeaderB(...)) messageB(...);
}
void messageA(...) { ... }
void messageB(...) { ... }
};

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