C 11中的变量表达式?
在C 11中,我对类型T和对T的引用之间的区别感到困惑,因为它们适用于命名变量的表达式.具体考虑:
int main() { int x = 42; int& y = x; x; // (1) y; // (2) } 上面(1)中的表达式x的类型是什么?是int还是lvalue对int的引用? (它的值类别显然是左值,但这与其类型是分开的) 同样,上面(2)中的表达式y的类型是什么?是int还是lvalue对int的引用? 它在5.1.1.8中说:
解决方法
你缺少的是这个(§5/ 5):
因此,虽然标识符y的类型为int&,但表达式y的类型为int.表达式永远不会有引用类型,因此表达式的类型都是int. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |