繁体   English   中英

structname &function 在下面的例子中是如何工作的?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM