#include <iostream>
using namespace std;
class Box {
friend Box operator+(Box &box1, Box &box2);
public:
Box(int L, int H, int W)
:length(L), height(H), width(W) {
cout << "\nBox constructor is executed";
}
void display() {
cout << "\nLength = " << length;
cout << "\nHeight = " << height;
cout << "\nWidth = " << width;
}
private:
int length;
int height;
int width;
};
Box operator+(Box &box1, Box &box2) {
cout << "\nFriend add operator is executed";
int L = box1.length + box2.length;
int H = box1.height + box2.height;
int W = box1.width + box2.width;
return Box(L, H , W);
}
int main() {
Box firstBox(4, 5, 6);
Box secondBox(3, 3 ,3);
firstBox.display();
firstBox = firstBox + secondBox;
firstBox.display();
return 0;
}
我找到了一个能够理解朋友功能的代码。我明白了。但是,我无法理解朋友操作员返回什么?有人说它是未命名的对象。他们中的一些人说它是构造函数。他们两个听起来都不合理。请有人解释一下吗?
答案 0 :(得分:1)
有人说它是未命名的对象
正确的术语是临时实例。
他们中的一些人说它是构造函数。
它实际上是一个构造函数调用。
在变量声明语句之外的构造函数调用将创建Box
的临时实例,并且该函数将从函数返回值。