C++ 变量引用&的问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 10:28:22
原型1:QFlags QFlags::operator& ( uint mask ) const
原型2:QFlags & QFlags::operator&= ( int mask )

以上是在类QFlags中,&和&=两个操作符重载函数原型
原型1说明:this为常量,返回this与mask按位与操作的结果
原型2说明:this非常量,设置this与mask按位与操作的结果到this,并返回对this的引用。

我的问题是,原型1返回值是否可以也使用引用,即如下:
QFlags & QFlags::operator& ( uint mask ) const

该类的具体实现我也不清楚。
假设,按位与操作的结果存储在该重载函数实现中的一个局部变量中,那么返回值能不能使用引用呢?为什么?
是我把问题说复杂了。
其实一句话:作为返回值的局部变量,其相应的返回类型是否可以是引用?
即,当该局部变量随着函数的退出被销毁时,返回的引用是否会被设为无效?

这里不讨论函数的作用。

试了试,不会被设为无效。简单类型可以,结构体也可以。
typedef struct ttt
{
int a;
int b;
};
ttt& CTestcsDlg::aaa()
{
ttt t;
t.a=1;
t.b=2;
return t;
}
void CTestcsDlg::OnButton6()
{
ttt c;
c=aaa();
}
c=aaa后,c的值还是1和2.