0

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

4

0 回答 0