11.15.2017

<mystring.h> header file

#include <iostream>
using namespace std;

class mystring {
private:
       int len;
       char *str;
public:
       mystring() : str(NULL), len(0) { }
       mystring(char *s) : str(new char[len+1]), len(length(s)) { copy(s); }
       mystring(const mystring &s)
              : str(new char[len+1]),
              len(length(s.str))
              {
              copy(s.str);
              }

       ~mystring()
              {
                     if (str != NULL) {
                     delete []str;
                            str = NULL;
                            len = 0;
                     }
              }

       char *get_string()
              {
                     return str;
              }

       void set_string(char *s)
              {
                     len = length(s);
                     if (str != NULL) delete []str;
                     str = new char[len+1];
                     copy(s);
              }

private:
       int length(char *s)
              {
                     int len = 0;

                     while (*s++ != '\0') len++;
                            return len;
              }

       void copy(char *s)
              {
                     for (int i = 0; i <= len; i++) str[i] = s[i];
              }
};

<main.cpp>
#include "mystring.h"

void print_safe(mystring &s) 
{
cout << "safe: " << s.get_string() << endl;
}  

void print_dangerous(mystring &s) 
{
cout << "dangerous: " << s.get_string() << endl;
}  

 void print()
{
mystring a("C++ Programming");

print_safe(a);
print_dangerous(a);
}

void foo()
{
mystring a("Sungshin University");
mystring b = a;

print_safe(a);
print_safe(b);
}

int main()
{
print();
foo();

system("pause");
return 0;
}