クラスのパディング バイトを 0 に設定したいのは、インスタンスをバイト レベルで保存/読み込み/比較/ハッシュしているためです。
私はこれが私が望むものを達成することを知っています(自明にコピー可能な型の場合):
struct Example
{
Example(char a_, int b_)
{
memset(this, 0, sizeof(*this));
a = a_;
b = b_;
}
char a;
int b;
};
私はそれをするのが好きではありません.つまり、すべて 0 ビットです)。
余談ですが、明らかに自明にコピー可能な型に限定されていますが、上記の操作 (バイトレベルでの読み込み/保存/比較/ハッシュ) には自明にコピー可能な型が必要なので、それは私にとっては問題ではありません。
私が欲しいのは、この[魔法の]スニペットのようなものです:
struct Example
{
Example(char a_, int b_) : a(a_), b(b_)
{
// Leaves all members alone, and sets all padding bytes to 0.
memset_only_padding_bytes(this, 0);
}
char a;
int b;
};
私はそのようなことが可能であるとは思わないので、誰かが醜くない代替案を提案できるなら...私はすべての耳です:)