// Dynamic Array Class
// array.h
#include <iostream>
class Array {
int* a;
int n;
int dummy;
void init(const Array&);
public:
Array(int = 0);
~Array();
Array(const Array&);
Array& operator=(const Array&);
int& operator[](int);
int length() const;
};
// Dynamic Array Class
// array.cpp
#include <new>
#include "Array.h"
void Array::init(const Array& s) {
if (s.n > 0) {
a = new (std::nothrow) int[s.n];
if (a) {
n = s.n;
dummy = s.dummy;
for (int i = 0; i < n; i++)
a[i] = s.a[i];
}
}
else if (s.n < 0)
{
std::cerr << "Oops! Something went wrong" << std::endl;
}
else {
a = nullptr;
n = 0;
dummy = 0;
}
}
Array::Array(int no) : n(no), dummy(0) {
if (n > 0)
a = new (std::nothrow) int[n];
else
{
a = nullptr;
n = 0;
}
}
Array::~Array() { delete[] a; }
Array::Array(const Array& s) { init(s); }
Array& Array::operator=(const Array& s) {
if (&s != this) {
delete[] a;
init(s);
}
return *this;
}
int& Array::operator[](int i) {
if ((i >= 0) && (i < n))
return a[i];
else
return dummy;
}
int Array::length() const {
return n;
}
我写了个单元测试来测试Array,但其中有两个判断不太懂应该怎么去测试,不管怎么写都覆盖不到