chr*_*irk 0 c++ performance struct class unions
假设我有以下内容:
#pragma pack(push,1)
struct HDR {
unsigned short msgType;
unsigned short msgLen;
};
struct Msg1 {
unsigned short msgType;
unsigned short msgLen;
char text[20];
};
struct Msg2 {
unsigned short msgType;
unsigned short msgLen;
uint32_t c1;
uint32_t c2;
};
.
.
.
Run Code Online (Sandbox Code Playgroud)
我希望能够重用HDR结构,所以我不必继续定义两个成员:msgType和msgLen.我不想出于性能原因而涉及vtable,但我确实想要为每个结构覆盖operator <<.基于这最后一个要求,我不知道我怎么可能使用联合,因为大小也不同.
关于如何最好地处理纯粹性能的任何想法
Oli*_*rth 10
这里的作文最合适:
struct Msg1
{
HDR hdr;
char text[20];
};
Run Code Online (Sandbox Code Playgroud)
虽然你可以使用C++继承,但在这种情况下它在语义上并没有意义.a Msg1不是HDR.
或者(可能优先),您可以定义抽象Msg基类型:
struct Msg
{
HDR hdr;
protected:
Msg() {}
};
Run Code Online (Sandbox Code Playgroud)
并拥有所有具体的消息类.
普通的C++继承有什么问题?
struct HDR { ... };
struct Msg1: HDR { ... };
Run Code Online (Sandbox Code Playgroud)
只是不要声明任何虚拟成员函数,你将全部设置.