gpt4 book ai didi

c++ - C++ 标准是否对没有虚拟成员函数的类类型的大小做出任何保证?

转载 作者:可可西里 更新时间:2023-11-01 18:06:46 26 4
gpt4 key购买 nike

我使用 C++ 进行嵌入式编程。

假设我必须实现一个严格定义(即逐字节)的类类型,我可以向它添加一个构造函数和一些其他非虚方法,而该类型的对象不会在字节级别发生变化吗?也就是说,我可以假设不会向其中添加任何其他数据吗?

我假设 RTTI 已关闭。

我想确定 C++ 标准是否定义了这一点。

最佳答案

是的,如果您添加构造函数和/或非虚拟方法,您将不会更改类的大小或布局,因为原始类和新类的布局将兼容( 9.2 类成员 [class.mem] #17),但仅当它们是标准布局类时

标准布局类定义为:

9 Classes [class]

A standard-layout class is a class that:

— has no non-static data members of type non-standard-layout class (or array of such types) or reference,

— has no virtual functions (10.3) and no virtual base classes (10.1),

— has the same access control (Clause 11) for all non-static data members,

— has no non-standard-layout base classes,

— either has no non-static data members in the most derived class and at most one base class with non-static data members, or has no base classes with non-static data members, and

— has no base classes of the same type as the first non-static data member.

关于c++ - C++ 标准是否对没有虚拟成员函数的类类型的大小做出任何保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861161/

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