Ошибка в выводе динамического массива символов
Пытаюсь реализовать свой класс для строк
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;
}
Я ввожу строку но выводится вообще не то.Прошу помощи