これどこ間違ってるん?表示が滅茶苦茶なんだが

class Super {
protected:
const std::string& m_str;
void write() const {
std::cout << m_str << std::endl;
}
public:
Super(const std::string& s) : m_str(s) {};
};

class Sub : public Super {
public:
Sub() : Super(std::string("string")) {};
void write() const {
Super::write();
}
};

int main()
{
Sub* s = new Sub;
s->write();
delete s;
}