Bjarne:为什么一个空类的大小不为0?

2016-02-19 20:01 5 1 收藏

下面是个简单易学的Bjarne:为什么一个空类的大小不为0?教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

要清楚,两个不同的对象的地址也是不同的。基于同样的理由,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";

}
  有一条有趣的规则:一个空的基类并不一定有分隔字节。

strUCt X : Empty {
 int a;
 // ...
};



void f(X* p)
{
 void* p1 = p;
 void* p2 = &p-a;
 if (p1 == p2) cout "nice: good optimizer";
}
  这种优化是答应的,可以被广泛使用。它答应程序员使用空类以表现一些简单的概念。现在有些编译器提供这种“空基类优化”(empty base class optimization)。

来源:http://www.tulaoshi.com/n/20160219/1622550.html

延伸阅读
标签: Web开发
我现在还不会写持久层,就用这种方法加上存储过程用,我感觉还比较爽,希望大家多多指教 public class clsdb {      public clsdb()  {   //   // TODO: 在此处添加构造函数逻辑   //  } //数据库连接     public static SqlCo...
标签: Web开发
非常不错的一个javascript 类 代码如下: /*    *  Author:aoao  *    Homepage:http://www.loaoao.com  *  Email:loaoao@gmail.com / QQ:2222342  *  Copyright (c) 2006 aoao  *  Licensed under ...
CRAS是一个MFC类,它封装了Windows 的远程访问服务(Remote Access Service)。这个类的主要优点是通过LAN便可以连接到Internet,并且不用安装RAS,因为RAS DLLs是动态加载的。[豆豆技术提供(ddvip.com)] CRAS的使用非常简单。将CRAS文件添加到工程中,创建一个CRAS类实例并调用它的Initialize方法即可。 BOOL CRAS::Initialize ...
标签: Web开发
在给blog加上无刷新搜索和即时验证检测后,又看了下代码,感觉太过麻烦,就把XMLHttpRequest请求封装到一个类里面,用起来方便多了,不用记那么多代码,什么创建XMLHttpRequest对象什么的,这部分代码也是重用性比较高的~已经打包,在日志的末尾下载。 要看效果的话点开侧边栏里的日志搜索,里面有一个无刷新搜索,就是了,或者在阅读日志或...
标签: Java JAVA基础
根据这些特点,对队列定义了以下六种操作: enq(x) 向队列插入一个值为x的元素; deq() 从队列删除一个元素; front() 从队列中读一个元素,但队列保持不变; empty() 判断队列是否为空,空则返回真; clear() 清空队列; search(x) 查找距队首最近的元素的位置,...

经验教程

906

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部