这基本上是我之前问题的延续。
这是C 14中的[class]/7:
标准布局类是这样的类:
请考虑以下代码段:
struct B{ int i; };
struct A : B{ int j; };
A
满足要点(7.1)到(7.4),但不满足(7.5),因为A
有一个非静态数据成员,并且有一个基类和一个非动态数据成员。
A
是标准布局类的问题是什么?
编辑
据我所知,对于这个问题被认为是欺骗的问题的公认答案,如果我尝试将指向A
的指针投射到基类B
的第一个数据成员并返回,则上面的代码段将具有未定义的行为,因为OP编写的这句话:
< code >在一个类中,根据声明顺序以递增的地址分配成员。然而,C并没有规定跨类的数据成员的分配顺序。
但这似乎没有回答我的问题。例如,假设在某个编译器实现中,baseB
将在内存中跟随struct A
,而不是在它之前。但这将与一个事实相矛盾,即根据[conv.ptr]/3,从指向派生类的指针到指向基类的指针存在隐式转换:
“指向cv D的指针”类型的prvalue,其中D是一个类类型,可以转换为“指向cv B的指针”类型的prvalue,其中B是D的基类(第10条)。
也就是说,如果基 B
在内存中跟随结构 A
,则上述隐式转换将无效。
直接回答以下问题:
这个项目符号的目的是允许非常简单的继承情况,其中只有一个类具有数据成员。
继承的数据布局是未指定的,因此标准可以完全禁止继承,但如果一个类没有数据将结果视为标准布局,则标准会例外。
本文向大家介绍Java eclipse项目中项目的类路径是什么?,包括了Java eclipse项目中项目的类路径是什么?的使用技巧和注意事项,需要的朋友参考一下 您可以使用构建路径在eclipse项目中包含需要设置类路径的Jar文件 步骤1- 右键单击项目选择构建路径→配置构建路径。 步骤2-选择库,选择添加外部JAR ...按钮。 步骤3-然后浏览所需的jar文件所在的文件夹,选择它们并按打开
问题内容: 所以我有一个我想在一部分文本的开头插入一个。我怎样才能做到这一点?显示文字时,如何创建一个创建该项目符号的点? 编辑:* 应该在 iOS 上可用 * 问题答案: 简单一点:[mutableAttributedString insertAttributedString:@“•\ t” atIndex:0]; 难点。遵循以下内容。(这是从一个较大的项目中摘录的,但可能会为您提供一个不错的开
问题内容: 我了解Java中的无符号右移运算符“ >>>”是什么,但是为什么我们需要它,为什么我们不需要相应的无符号左移运算符? 问题答案: 该运营商允许你将和为32位和64位 无符号 整型,这是从Java语言缺少的。 当您移动不代表数值的内容时,这很有用。例如,您可以使用32位s 表示黑白位图图像,其中每个位图在屏幕上编码32个像素。如果需要将图像向右滚动,则希望将an左侧的位变为零,以便可以轻
我已经开始使用facebook和google+进行firebase登录。 https://github.com/firebase/firebase-login-demo-android/blob/master/app/src/main/java/com/firebase/samples/logindemo/mainactivity.java 在上面的代码中,什么是“firebase_url”。当我
如何决定projectkey?我的意思是我们在哪里可以找到我们的<代码>。Net,< code>plsql项目? 注意-我是这些声纳的新手,正在尝试在我的组织中自己设置所有这些。
本文向大家介绍Django项目中python类的最佳位置是什么?,包括了Django项目中python类的最佳位置是什么?的使用技巧和注意事项,需要的朋友参考一下 您可以将上述课程放在想要的地方。 示例 然后,您可以使用import导入qux.py模块。 从project.foo.qux导入* 处理大量文件时,使目录更好。例如-