赋值是创建一个实现动态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 对象,当我测试等效性时,它返回它们相等。