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

必力劲

必力劲

2016-02-19 20:01

下面是个简单易学的Bjarne:为什么一个空类的大小不为0?教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!
要清楚,两个不同的对象的地址也是不同的。基于同样的理由,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)。
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Bjarne:为什么一个空类的大小不为0?

一个Ajax类

Web开发
一个Ajax类

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一个封装的Ajax类

Web开发
一个封装的Ajax类

一个改进的UBB类

PHP
一个改进的UBB类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

创建一个空数据库

电脑网络
创建一个空数据库

一个通用的分页类

Web开发
一个通用的分页类

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

WPS中如何自动取消网址超链接

WPS中如何自动取消网址超链接

asp查询xml的代码实现无刷新 模糊查询

asp查询xml的代码实现无刷新 模糊查询
下拉加载更多内容 ↓