我是C++的新手.我从一些变异成员的网站上经常阅读?
class School
{
int x; -> data member.
}
Run Code Online (Sandbox Code Playgroud)
我知道数据成员.但什么是变体成员?
注意:从c ++规范:在Constructor页面下.
X is a union-like class that has a variant member with a non-trivial default constructor.
Run Code Online (Sandbox Code Playgroud)
Ste*_*sop 13
"变体成员"在C++ 11的9.5/8中定义:
类似联合的类是具有匿名联合作为直接成员的联合或类.类似联合的类X具有一组变体成员.如果X是联合,则其变体成员是非静态数据成员; 否则,其变体成员是作为X成员的所有匿名联合的非静态数据成员.
换句话说,联合的所有非静态数据成员都是"变体成员",对于包含任何匿名联合的类,其非静态数据成员是该类的"变体成员".
您引用的上下文是12.1/5,表示如果类似联合的类具有带有非平凡构造函数的变体成员,则会删除该类本身的默认构造函数.问题是哪个变体成员应该由类的默认构造函数构造,并且解决方案不是具有默认构造函数.如果所有变体成员都有简单的默认构造函数,则没有问题,因为通过不执行任何操作,类的默认构造函数都是同等地构造所有/无.
boost::variant是一个单独的事情.如果"某些网站"说"变体成员",当他们的意思是"给定的可能存在的类型"时,我就不会感到惊讶boost::variant,也就是说"成员" variant.但这不是C++ 11标准中新定义的含义.
| 归档时间: |
|
| 查看次数: |
5185 次 |
| 最近记录: |