Ошибка в выводе динамического массива символов

Пытаюсь реализовать свой класс для строк

MyStr.h:

#pragma once
#include <iostream>

using namespace std;

class MyStr{
private:
    char* string;
public:
    MyStr();
    MyStr(const MyStr&);
    ~MyStr();
    friend ostream& operator << (ostream&,const MyStr);
    friend istream& operator >> (istream&, MyStr);
};

MyStr.cpp:

#include "MyStr.h"

MyStr::MyStr(){
    string = new char[256];
}

MyStr::MyStr(const MyStr& obj){
    this->string = new char[256];
    for(unsigned int i = 0; obj.string[i] != '\0'; i++){
        this->string[i] = obj.string[i];
    }
}

MyStr::~MyStr(){
    delete string;
}

ostream& operator << (ostream& out, const MyStr obj){
    for(unsigned int i = 0; obj.string[i] != '\0' ; i++){
        out << obj.string[i];
    }
    return out;
}

istream& operator >> (istream& in, MyStr obj){
    cin.getline(obj.string,256);
    return in;
}

main.cpp

#include "MyStr.h"

int main(){
    MyStr inp;
    cin >> inp;
    cout << inp;
    return 0;
}

Я ввожу строку но выводится вообще не то.Прошу помощи


Ответы (0 шт):