来自cppreference 的定义:
非静态数据成员是在类的成员规范中声明的变量。
他们有这样的例子:
S级
{
内部& r; // 引用类型的非静态数据成员
};
但是我们知道非静态数据成员引用不是变量,因为标准:
§3/6:变量是由非静态数据成员或对象以外的引用声明引入的。
那么他们对非静态数据成员的定义是错误的(他们忘记了这个异常)?我在哪里可以找到术语“非静态数据成员”的正确定义?
不幸的是,我在 C++ 标准中找不到非静态数据成员的定义。
编辑:从cppreference 对象定义和下面的讨论我们可以得出结论,非静态数据成员根本不是对象。并且cppreference 非静态成员页面更正了当前讨论的定义。
根据5/1(标准):
表达式可能会导致值,并可能导致副作用.
显然我们有两种可能的选择:
1)表达导致一个值并导致副作用
2)表达产生一个值,不会引起副作用
还有哪些其他选择?(例如,是否存在任何不会产生值
的表达式?)我想到了带有void返回类型的throw-expression和函数.我们可以将它们引用到第一类或第二类(void具有可能副作用的类型的值)吗?