2013-04-13 47 views
7

根据C++标准:C++标准布局和参考

标准布局类是一类:

都具有一个类型的没有非静态数据成员是非准则性布局类(或这种类型的数组)或引用。

什么属性引用的(一个或多个)防止参照成员的类被包含在一个标准的布局类的定义是什么?

+0

你假定这样的属性需要存在吗?不必有... – Yakk

+0

“预防”是一个强烈的字眼。从一个角度来看,引用只是给编译器一个很好的借口,把该结构作为一个抽象的数据类型,而不是一个。存储布局规范。参考文献不需要有任何*自己的存储*。 – jthill

回答

11

一个标准布局类都是关于在内存中为特定类型定义明确的布局。在C++中,引用不是对象,因此没有能够在一个良好定义的方式通过,即使实施,将通常必须有某种对他们实施的具体存储的符合规范的程序访问的任何存储。

因此,在参考成员必须具有标准布局的情况下,没有任何意义。

有在提到这对C++内存模型的部分标准的非规范性注:

[注:语言的各种功能,如引用和虚函数,可能会涉及额外的内存位置,程序无法访问但由实施管理。末端注]

+0

感谢您的好回答:这非常有意义。 – TRISAbits