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

2016-02-19 20:01 1 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)。

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

延伸阅读
标签: Web开发
前几天大佛写了“ASP设计模式”,可能有些初学者或者刚刚接触ASP的朋友不一定完全看得明白,偶就整理了一下编写一个ASP类的方法,大部分是从网上找来的。希望对朋友们有帮助。  《ASP设计模式》(作者 我佛山人): dispbbs.asp?boardID=20&ID=247879 首先ASP的类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接...
标签: 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对象什么的,这部分代码也是重用性比较高的~已经打包,在日志的末尾下载。 要看效果的话点开侧边栏里的日志搜索,里面有一个无刷新搜索,就是了,或者在阅读日志或...

经验教程

980

收藏

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