赋值是创建一个实现动态cstring(以null结尾的char数组)的类。默认构造函数应该创建一个空数组,并且还应该有一个重载的构造函数,它创建一个大小为n的数组。还应该是一个将数组增大到更大的函数(他说这应该在类中,但我们不会在以后的任务中使用它)。我们还应该创建这个类的两个版本。在一个版本中,我们将等效运算符作为成员函数重载,在第二个版本中,我们将等效运算符作为非成员函数重载。
对我来说有点奇怪,因为这似乎很容易。
对于成员版本,如果两个班级大小相等,我将其设置为返回true。
bool CSTR::operator ==(const CSTR & rhs) {
return (size == rhs.size);
}
对于非成员版本,我刚创建了一个成员函数,将其大小作为整数返回,然后在运算符重载时进行比较。
bool operator ==(const CSTR2 & CSTR2_1, const CSTR2 & CSTR2_2) {
return (CSTR2_1.getSize() == CSTR2_2.getSize());
}
我有点害怕在没有任何外部输入的情况下将其打开,因为与我们在课堂上经历的所有内容相比,我的解决方案似乎过于简单。我知道我们将扩展这个程序以便以后的任务,但是如果你们中的任何人看到我在这里缺少的东西,那么一些输入将是非常棒的。
以下是我尝试用来比较cstring的代码。注意:赋值说明中没有任何内容说明了如何在cstrings中输入值。
#include "CSTR.h"
#include <cstring>
using namespace std;
class CSTR {
public:
CSTR();
CSTR(unsigned int n);
~CSTR();
bool operator ==(const CSTR & rhs);
private:
unsigned int size;
char *elems;
bool grow(unsigned int newSize);
};
=================================
CSTR::CSTR() {
size = 0;
elems = new char [0];
}
CSTR::CSTR(unsigned int n) {
if (n > 0) {
size = n;
elems = new char [size];
}
else {
size = 0;
elems = new char [0];
}
}
CSTR::~CSTR() {
delete [] elems;
}
bool CSTR::operator ==(const CSTR & rhs) {
return ((elems == rhs.elems) == 0);
}
我已经初始化了两个不同大小的CSTR对象,当我测试等效时,它返回它们是相等的。