#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;
}