C++包装类的大小

发布于 2024-11-07 02:14:26 字数 125 浏览 9 评论 0原文

假设我有一个类 A,它不从任何东西继承,没有虚方法,并且只有一个类型为 T 的变量。C++ 是否保证 sizeof(A) == sizeof(T) ?

编辑:

另外,如果 T 是复合类型,会有什么不同吗?

Suppose I have a class A that does not inherit from anything, has no virtual methods, and has exactly one variable of type T. Does C++ guarantee sizeof(A) == sizeof(T)?

EDIT:

Also if T were a composite type, would it make a difference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

天气好吗我好吗 2024-11-14 02:14:26

不,由于填充的原因,它可能会超过 sizeof(T)

No, it might be more than sizeof(T) due to padding.

世界如花海般美丽 2024-11-14 02:14:26

我不认为它明确地保证了这一点,但我认为它不会有什么不同。

I don't think it explicitly guarantees it, but I don't think it would ever be different.

别靠近我心 2024-11-14 02:14:26

我认为C++应该保证sizeof(A) == sizeof(T)。

考虑以下情况,C++ 应该使其像 C 中一样工作:

A a[10];
T t[10];

A * ap = (A *) t;
T * tp = (T *) a;

memcpy(ap, tp, sizeof(*ap));

I think C++ should guarantee sizeof(A) == sizeof(T).

Consider bellow situation, C++ should make it works just like in C:

A a[10];
T t[10];

A * ap = (A *) t;
T * tp = (T *) a;

memcpy(ap, tp, sizeof(*ap));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文