First example:
#include <cstdio>
#include <string>
using namespace std;
class Test
{
public:
Test();
Test(string name);
~Test();
private:
string name;
};
Test::Test()
{
name = "Unknown";
printf("%s got created\n", name.c_str());
}
Test::Test(string new_name)
{
name = new_name;
printf("%s got created\n", name.c_str());
}
Test::~Test()
{
printf("%s got destroyed\n", name.c_str());
}
int
main()
{
Test test("\"function level\"");
printf("Hello World!\n");
Test *ptr_test = new Test("Pointer");
delete ptr_test;
for (int i = 0; i < 5; ++i) {
Test loop_test("\"loop level\"");
printf("%d\n", i);
}
return 0;
}
Second example:
#include <cstdio>
#include <cstring>
class SillyString
{
public:
SillyString();
SillyString(char *str);
~SillyString();
char *c_str();
private:
char *data;
};
SillyString::SillyString()
{
data = NULL;
}
char *
SillyString::c_str()
{
if (data == NULL) {
return "";
} else {
return data;
}
}
SillyString::SillyString(char *str)
{
if (str == NULL) {
data = NULL;
} else {
size_t len = strlen(str);
data = new char[len + 1];
strcpy(data, str);
}
}
SillyString::~SillyString()
{
delete data;
}
int
main()
{
SillyString *str = new SillyString("Hi, my name is Faith");
SillyString str1(str->c_str());
delete str;
printf("%s.\n", str1.c_str());
return 0;
}