gpt4 book ai didi

c++ - 尝试创建重载 + 运算符时在 main 函数中写什么

转载 作者:行者123 更新时间:2023-11-28 05:49:33 26 4
gpt4 key购买 nike

我要开门见山了。我需要在源代码的主要函数中编写什么才能显示由重载函数添加在一起的 2 个对象?这是我的 Box 类代码

class Box
{
private:

int area;

public:

// Constructor
Box(int a)

{ area = a; }

// Overloaded + operator function
Box operator+(const Box &lhs, const Box &rhs)
{
Box sum = lhs;
sum += rhs;
return sum;
}

};

这是我的主要功能代码

int main()
{
// Create box objects
Box wood(10);
Box steel(20);

// Question: How do I finish the code by adding wood and steel objects
// and display the sum?
// Do I have to create another box object?

如您所见,我想将 2 个框对象相加,但我不知道如何显示 2 个框对象的总和。我如何显示它们?我是否必须在 cout 将两个对象放在一起的类中编写一个 void 函数?谢谢:)

最佳答案

您的 Box 类应该如下所示:

class Box
{
public:
// Let's just say the area is public.
int area;

public:
// Constructor
Box(int a)
{
area = a;
}

// New overloaded operator+=
Box& operator+=(const Box &rhs)
{
this->area += rhs.area;

return *this;
}

// Overloaded + operator function, and it's friend!
friend Box operator+(const Box &lhs, const Box &rhs);
};

请注意,我定义了您原来的 operator+ 重载函数 friend,并添加了 operator+= 重载函数。

Box operator+(const Box &lhs, const Box &rhs)
{
Box sum = lhs;

// This needs the implementation of operator+=(rhs)
sum += rhs;
return sum;
}

为什么?因为你实际上调用了两种方法,它们是 operator+operator+=

现在我们可以在 main 中简单地做如下:

int main()
{
Box wood(10);
Box steel(20);

// This needs the implementation of operator+(lhs, rhs)
Box result = wood + steel;

std::cout << result.area << std::endl;
return 0;
}

关于c++ - 尝试创建重载 + 运算符时在 main 函数中写什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35545876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com