【发布时间】:2021-04-09 05:45:51
【问题描述】:
在 c++ 中使用 + 的运算符重载来添加存储在 c++ 中的两个数组中的整数值的正确语法是什么?
在下面的代码示例中。我设法使用以下方法连接两个数组的大小:
Queue operator+(Queue &obj)
{
Queue total;
total.size = this->size + obj.size;
但我不知道连接它们的值的正确语法是什么?以下不起作用。
total = this->queue + obj;
}
完整代码如下:
#include <iostream>
using namespace std;
class Queue {
int size;
int* queue;
public:
Queue() {
size = 0;
queue = new int[100];
}
void add(int data) {
queue[size] = data;
size++;
}
void remove() {
if (size == 0) {
cout << "Queue is empty"<<endl;
return;
}
else {
for (int i = 0; i < size - 1; i++) {
queue[i] = queue[i + 1];
}
size--;
}
}
void print() {
if (size == 0) {
cout << "Queue is empty"<<endl;
return;
}
for (int i = 0; i < size; i++) {
cout<<queue[i]<<" <- ";
}
cout << endl;
}
Queue operator+(Queue &obj)
{
Queue total;
total.size = this->size + obj.size;
total = this->queue + obj;
return total;
}
} ;
int main() {
Queue q1;
q1.add(42); q1.add(2); q1.add(8); q1.add(1);
Queue q2;
q2.add(3); q2.add(66); q2.add(128); q2.add(5);
Queue q3 = q1+q2;
q1.print();
q2.print();
q3.print();
return 0;
}
【问题讨论】:
-
没有正确的语法。您必须分配一个具有两个较小数组大小的新数组,然后将两个较小数组中的内容复制到新的大数组中。这是喜欢标准库容器的众多原因之一,例如
std::vector而不是 c 样式的数组。
标签: c++ arrays operator-overloading concatenation