перегрузить оператор присваивания (+ =) и объединить два строковых объекта класса с помощью ключевого слова new - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно перегрузить оператор присваивания += и объединить два объекта MyString (класс) в C ++. Я использую CodeBlocks. Мне нужно динамически распределять память, поэтому я должен использовать новое ключевое слово для перегрузки оператора +=. Используется следующий код:

MyString.h

#ifndef MYSTRING_H
#define MYSTRING_H


class MyString
{
   private:
    const char* str;
    int length;
public:
    MyString();
    ~MyString();
    MyString(const char*);
    MyString(const MyString&);
    void operator = (const MyString&);
    int getLength() const;
    MyString operator + (const MyString&);
    MyString operator += (const MyString&);
    void display();
};

#endif // MYSTRING_H

MyString. cpp

#include "MyString.h"
#include <cstring>
#include <iostream>

MyString::MyString()
{
    str="\0";
    length=0;

}
MyString::MyString(const char* Str)
{
    str=Str;
    int str_length=0;

    while (str[str_length] != '\0') {
        str_length++;
    }
    length=str_length;
}
MyString::MyString(const MyString &temp)
{
    str=temp.str;
    length=temp.length;
}
void MyString::operator = (const MyString &deepcopy)
{
    str=deepcopy.str;
    length=deepcopy.length;
}

MyString MyString::operator += (const MyString& strrr)  // here I need to overload assignment operator with new keyword dynamically.
{

    str = str+strrr.str;    // this is not a correct code.
}

int MyString::getLength() const
{
    return length;
}

void MyString::display()
{
    std::cout << str<<std::endl;
    std::cout << "string length: " <<length<<std::endl;
}
MyString::~MyString()
{

}

основной. cpp

#include <iostream>
#include <MyString.h>


int main()
{
    char str[20];
    MyString S1;
    std::cout << "Enter a string : " <<std::endl;
    std::cin >> str;
    MyString S2(str);
    S2.display();
    MyString S3=S2;
    S3.display();
    MyString S4=S3;
    S4.display();
    MyString S5; // This S5 object that I'm trying to use to overload += operator
    S5 = S3 + S4;
    S5.display();
    return 0;
}

введите здесь код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...