[英]Operator Overloading Return Type
这是一个简单的代码:
Iterator& operator=(const Iterator& other)
{
node_ = other.node_;
return(*this); // This clearly is a value
}
在这种情况下,我们保证该函数将返回对Iterator数据类型的引用。
但是我们正在返回一个值 ...这如何工作..... ??
在许多示例中看到了这一点:
T& operator[] (unsigned int index)
{
if (index >= numEle)
return ptr[0]; // This clearly is a value
else
return ptr[index];
}
这是一个非常幼稚的疑问,但无法真正理解其工作原理.....
参考T&
表示类型T
的对象。 因此,我们总是使用类型T
的对象初始化参考T&
:
int x = 5;
int& r = x;
在您的情况下,返回类型为Iterator&
,因此您返回一个Iterator
对象。
您当然可以用另一个T&
初始化引用T&
,因为另一个引用表示类型T
的对象:
int& r2 = r;
您应该知道,数组元素和取消引用的指针可以用作赋值运算符的左操作数和右操作数。 可以将它们视为变量和值。
int arr[5] = {0};
int x = a[2]; // a[2] is on right side of `=`
a[2] = 5; // a[2] is on left side of `=`
int *p;
p = &arr[0];
*p = 10; // *p is on left side of `=`
a[1] = *p; // *p is on right side of `=`
因此,当函数的返回类型只是一个类型时,则return
语句返回值。 当函数的返回类型是对变量的引用时 ,则return
语句将返回对变量的引用 。
它没有返回值,而是按照广告宣传:返回引用 (到值)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.