64,646
社区成员
发帖
与我相关
我的任务
分享
class X
{
int i;
public:
X(int ii = 0);
void modify();
};
X::X(int ii)
{
i = ii;
}
void X::modify()
{
i++;
}
X f5()
{
return X();
}
const X f6()
{
return X();
}
void f7(X& x)
{
x.modify();
}
int main()
{
f5() = X(1);//ok
f5().modify();//ok
f7(f5());//warning
f6() = X(1);//error
f6().modify();//error
f7(f6());//error
return 0;
}
int main()
{
X &a=f5(); /*error: invalid initialization of non-const
reference of type 'X&' from a temporary of type 'X' */
const X &b=f5();//ok
f5().i = 123;//ok
f5().modify();//ok
return 0;
}
class X
{
int i;
public:
X(int ii = 0);
void modify();
};
X::X(int ii)
{
i = ii;
}
void X::modify()
{
i++;
}
X f5()
{
return X();
}
const X f6()
{
return X();
}
void f7(X& x)
{
x.modify();
}
int main()
{
f5() = X(1);//ok
f5().modify();//ok
f7(f5());//warning,我这没报警告,可能是级别的问题,嵌套的好深
f6() = X(1);//error,这个地方你用非const赋给const X会报错呀
f6().modify();//error,还是那个问题呀,你f6()返回了一个const X,X.modify()的i不能在变化了呀
f7(f6());//error,同上,const X不能赋值给非const X的引用const同非const之间不能简单的相互赋值
return 0;
}