【发布时间】:2022-11-20 02:14:24
【问题描述】:
#include <iostream>
using namespace std;
class IntArray {
private:
int* m_data;
int m_len;
public:
IntArray(int = 0, int = 0);
~IntArray();
void print(void);
void set(int x, int y) {//!!!
int temp = x
x = y;
y = temp;
}
};
IntArray::IntArray(int size, int init) {
if (size <= 0) {
m_data = nullptr;
m_len = 0;
}
else {
m_data = new int[size];
m_len = size;
for (int idx = 0; idx < m_len; ++idx)
*(m_data + idx) = init;
}
}
IntArray::~IntArray() {
delete[]m_data;
}
void IntArray::print(void) {
for (int idx = 0; idx < m_len; ++idx)
cout << *(m_data + idx) << ' ';
cout << std::endl;
}
int main() {
cout << "a1: ";
IntArray a1{ 10, 100 };
a1.print();
cout << "a2: ";
IntArray a2{ a1 };
a2.set(3, 999);
a2.set(9, 123);
a2.print();
return 0;
}
当我输出 a2 时,我想在第三个输出“999”,在第九个输出“123”,在其余的输出“100”。但是,使用我编写的代码,只打印了“100”。我该如何解决?
输出
a1: 100 100 100 100 100 100 100 100 100 100
a2: 100 100 100 100 100 100 100 100 100 100预期的
a1: 100 100 100 100 100 100 100 100 100 100
A2:100 100 100 999 100 100 100 100 100 123
【问题讨论】: