零起飞网站建设工作室,濮阳建站建设,视频手机网站开发,宣传视频制作app返回指向const对象的引用
如果函数要返回#xff08;通过调用对象的方法或将对象作为参数#xff09;传递给他的对象#xff0c;可以通过返回引用来提高其效率。
下面两种实现都是可以的
//这是可以的
AA MAX(const AAt)
{
return t;
}
//这是不可以的
const AA通过调用对象的方法或将对象作为参数传递给他的对象可以通过返回引用来提高其效率。
下面两种实现都是可以的
//这是可以的
AA MAX(const AAt)
{
return t;
}
//这是不可以的
const AA MAX(const AAt)
{
return t;
}
我们得先了解几点
1返回对象将调用复制构造函数返回引用则不会
2引用指向的对象应该在调用函数执行时存在
3t被声明为const引用因此返回类型必须是const这样才匹配
返回非const对象的引用
两种常见的返回非const对象的情况是重载赋值运算符以及重载与cout一起使用的运算符前者旨在提高效率后者必须这么做。
operator()的返回值用于连续赋值返回引用可以提高效率不是const是因为要对其进行修改
cout与一起用如果使用返回类型ostream将要求调用ostream类的复制构造函数而ostream没有公有的复制构造函数。
总结
如果方法或函数要返回局部对象应返回对象而不是指向对象的引用。在这种情况下将使用复制构造函数来生成返回的对象。如果方法或函数要返回一个没有公有复制构造函数的类如ostream类它必须返回指向一个对象的引用