main.cpp
#include "SingleDog.h" void printCount() { cout << "Number of SingleDog: " << SingleDog::getCount() << endl; } int main() { char name[20] = "wangwang"; int num; cin >> num; SingleDog dog(0, name), *p; for (int i = 1; i <= num; ++i) { cin >> name; SingleDog a(i, name); if (i % 2 != 0) { p = new SingleDog(i, name); printCount(); p->print(); delete p; } else { SingleDog b(a); printCount(); b.print(); } } printCount(); dog.print(); return 0; }SingleDog.h
#include <iostream> using namespace std; class SingleDog { public: //constructor SingleDog(int id_, char* name_); //copy constructor SingleDog(const SingleDog &other); //desctructor ~SingleDog(); //return the count of single dog static int getCount(); //print some infomation void print() const { cout << "SingleDog " << id << ". My name is " << name << endl; } private: const int id; char *name; static int count; // the count of single dog };SingleDog.cpp*
#include "SingleDog.h" #include <iostream> #include <cstring> using namespace std; int SingleDog::count = 0; //类中的静态变量此处无需前缀static SingleDog::SingleDog(int id_, char* name_):id(id_){ name = new char[21]; strcpy(name,name_); count++; } SingleDog::SingleDog(const SingleDog &other):id(other.id){ name = new char[21]; //char*是内存分配 strcpy(name,other.name); count++; } SingleDog::~SingleDog(){ delete []name; count--; }; int SingleDog::getCount(){ //同样,类中的静态函数此处无需前缀static return count; }