Мне нужно перегрузить оператор присваивания +=
и объединить два объекта 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;
}
введите здесь код