[英]How does structname &function work in the following example?
#include<iostream>
struct emp
{
char name[20];
int age;
float sal;
};
emp e1={"Amol",21,2345.00};
emp e2={"Ajay",23,4500.75};
int main()
{
emp &fun();
fun()=e2;
std::cout<<std::endl<<e1.name<<" "<<e1.age<<" "<<e1.sal<<std::endl;
return 0;
}
emp &fun()
{
std::cout<<std::endl<<e1.name<<" "<<e1.age<<" "<<e1.sal<<std::endl;
return e1;
}
我不明白上面例子的工作原理,这和 &b = a 一样吗? e2 的值是如何传递给 &fun() 的?
注意:这是相当复杂的编码风格的例子
main()
第一行是函数fun
的前向声明,它返回对emp
对象的引用。 因此,表达式fun()
被视为泛左值,它可以位于赋值的左侧,或者是任何其他需要左值的操作的目标。
fun
返回对e1
的引用,因此赋值在语义上等同于e1 = e2;
前面是将 e1 成员的值序列化为cout
的副作用,如fun()
状态的定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.