为了确保两个不同对象的地址不同,必须如此。也正因为如此,new返回的指针总是指向不同的单个对象。我们还是来看代码吧:
class Empty { };
void f()
{
Empty a, b;
if (&a == &b) cout << "impossible: report error to compiler supplier";
Empty* p1 = new Empty;
Empty* p2 = new Empty;
if (p1 == p2) cout << "impossible: report error to compiler supplier";
}
另外,C++中有一条有趣的规则——空基类并不需要另外一个字节来表示:
struct X : Empty {
int a;
// ...
};
void f(X* p)
{
void* p1 = p;
void* p2 = &p->a;
if (p1 == p2) cout << "nice: good optimizer";
}
如果上述代码中p1和p2相等,那么说明编译器作了优化。这样的优化是安全的,而且非常有用。它允许程序员用空类来表示非常简单的概念,而不需为此付出额外的(空间)代价。一些现代编译器提供了这种“空基类优化”功能。
分享到:
相关推荐
零隐私空白文件生成器,以前见过国外有类似的软件,中文的是第一次见,在需要往硬盘或U盘里大量写入数据的时候,这种工具比较有用 它是可以帮助用户生成一个空白或者随机文件中任何可写或者可移动驱动器上的空白文件...
这是为什么? 1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如doublearray[256][256]? 命名空间 1.30如何判断哪些标识符可以使用...
这是为什么? 15 1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 15 1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断...
这是为什么? 1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]? 命名空间 1.30 如何判断哪些标识符可以使用,...
o 7.18 当数组是函数的参数时, 为什么 sizeof 不能正确报告数组的大小 ? * 8. 内存分配 o 8.1 为什么这段代码不行?char *answer; printf("Type something:\n"); gets(answer); printf("You typed \"%s\"\n", ...
为什么? 7.13 怎样使用指向函数的指针? 7.14 怎样用指向函数的指针作函数的参数? 7.15 数组的大小可以在程序运行时定义吗? 7.16 用malloc()函数更好还是用calloc()函数更好? 7.17 怎样说明一个大于64KB的...
在小的(零大小限制)瞬时子和杂散5子之间存在相变。 这种机制从上到下,严格地考虑了具有5个大脑的非摄动真空的频谱和模不变性条件。 通过发射和吸收瞬间,它也将我们从一个真空带到另一个真空。 这意味着实际...
为什么? 117 7.13. 怎样使用指向函数的指针? 117 7.14. 怎样用指向函数的指针作函数的参数? 117 7.15. 数组的大小可以在程序运行时定义吗? 119 7.16. 用malloc()函数更好还是用calloc()函数更好? 121 7.17. 怎样说明...
空空间中电磁场的量子真空波动似乎不会对带电测试粒子的运动产生可观察到的影响。 然而,当实现背景真空状态的改变时,例如当引入导电边界时,可能发生粒子速度的分散。 结果,除了由于粒子和边界之间的相互作用而...
S 具有字段和非零大小,但每个元素都是一个空矩阵。 严格地说,S 不是空的,因为空矩阵是它的内容,但这有时是一个有用的结构。 上述每种“空”结构数组都可以用作初始化。 它们都可以使用 STRUCT 创建,但如何...
老资源。 目录 1 声明和初始化1 1.1 我如何决定使用那种整数类型? . . . .... ....5.11 为什么有那么多关于空指针的疑惑?为什么这些问题如此经常地 出现? . . . . . . . . . . . . . . . . . . . ...
宇宙学家长期以来一直忽略量子场论者的规定,即对应于零态真空能的真空压力p的大小必须始终等于真空能密度ρ(即p =ρ)。 尽管广义相对论规定了真空引力场与(ρ+ 3p)之间成比例的附加条件,但宇宙真空的状态方程...
使用平均瞬时大小size = 1/3 fm和平均瞬时距离R = 1 fm的典型现象学值,我们得到Ms(0)= 256 MeV。 然后,我们将这种方法扩展到经过认真考虑的零模的实矢量胶子。 我们获得以下表达式Mg2(q)= 2Ms2(q)。 瞬子...
我们针对3 + 1D非阿贝尔规范理论和标量场提出了具有非零Hopf不变性的拓扑缺陷或瞬时解。 我们将这种解决方案称为Hopf缺陷,它代表一个时空事件,该事件使单极真空歧管旋转2π。 尽管此Hopf缺陷的作用在对数上是发散...
如果下列的方法能够正常运行,在控制台上将显示什么? ACD <br>public void example(){ try{ unsafe(); System.out.println("Test1"); } catch(SafeException e) {System.out....
EnableClientValidate:是否使用客户端脚本验证,验证内容包括是否为空、长度是否正确 ImageStyle:验证码图像样式 其中ImageStyle为复类属性,其公开属性如下: ImageStyle.ImgBgColor:图片背景色 ImageStyle....