fork download
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. class String
  6. {
  7. char *m_str;
  8. size_t m_len, m_alloced;
  9. public:
  10. String(const char *str = "")
  11. {
  12. m_len = strlen(str);
  13. m_alloced = m_len + 1;
  14. m_str = (char *)malloc(m_alloced);
  15. strcpy(m_str, str);
  16. }
  17. String(const String &other)
  18. {
  19. m_len = other.m_len;
  20. m_alloced = m_len + 1;
  21. m_str = (char *)malloc(m_alloced);
  22. strcpy(m_str, other.m_str);
  23. }
  24. String &operator =(const String &rhs)
  25. {
  26. if (m_alloced < rhs.m_len + 1)
  27. {
  28. m_alloced = rhs.m_len + 1;
  29. m_str = (char *)realloc(m_str, m_alloced);
  30. }
  31.  
  32. m_len = rhs.m_len;
  33. strcpy(m_str, rhs.m_str);
  34. return *this;
  35. }
  36. const char *get() const
  37. {
  38. return m_str;
  39. }
  40. };
  41.  
  42. int main()
  43. {
  44. String str1 = "asdf";
  45. String str2 = str1;
  46. String str3 = "12";
  47. str3 = str1;
  48.  
  49. cout << str1.get() << endl << str2.get() << endl << str3.get() << endl;
  50. }
  51.  
  52.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
asdf
asdf
asdf