#define _CRT_SECURE_NO_WARNINGS
#include
#include
using namespace std;
class Course
{
int count; //
char Objname[10];
char *Descrip;
public:
Course(const char *obj, const char *des) //
{
strcpy(Objname, obj);
if (des)
{
Descrip = new char[strlen(des) + 1];
strcpy(Descrip, des);
}
else
{
Descrip = 0;
}
count += 1;
}
Course(const Course &r) : Descrip(0)
{
strcpy(Objname, r.Objname);
if (r.Descrip)
{
Descrip = new char[strlen(r.Descrip) + 1];
strcpy(Descrip, r.Descrip);
}
count += 1;
}
~Course()
{
if (Descrip)
delete[] Descrip;
count--;
}
public:
Course &operator=(const Course &r)
{
if (Descrip)
delete[] Descrip, Descrip = 0;
if (r.Descrip)
{
Descrip = new char[strlen(r.Descrip) + 1];
strcpy(Descrip, r.Descrip);
}
strcpy(Objname, r.Objname);
return this; //
}
void operator+=(const char *des)
{
if (!des || !*des)
return;
int len = strlen(des);
if (Descrip)
len += strlen(Descrip);
char *s = new char[len + 1];
s = 0; //
strcpy(s, Descrip);
strcat(s, des);
if (Descrip)
delete[] Descrip;
Descrip = s;
}
void show()
{
if (Descrip && *Descrip)
cout << "Object: " << Objname << ". Description: " << Descrip << ". Count: " << count << endl;
else
cout << "Object: " << Objname << ". Description is null. Count: " << count << endl;
}
};
int Course::count = 0;
int main()
{
Course *s1 = new Course("s1");
s1->show();
Course s2(s1); //
delete s1;
Course s3("s3", "C++ Programming"), s4("s4", "College Physics");
s2.show();
s2 = s3;
s2.show();
s2 = s4;
s2 += ",College English";
s2.show();
}