一道类的题目(为什么会超时?)
Sample Input2
I_love_TA
helloworld
Sample Output
Number of SingleDog: 3
SingleDog 1. My name is I_love_TA
Number of SingleDog: 3
SingleDog 2. My name is helloworld
Number of SingleDog: 1
SingleDog 0. My name is wangwang
程序代码:
#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 }; 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; } int SingleDog::count=0; SingleDog::SingleDog(int id_, char* name_):id(id_) { int i=0; char *name=new char [20]; while(name_[i]!='\0'){ name[i]=name_[i]; i++; } name[i]='\0'; count++; } SingleDog::SingleDog(const SingleDog & other):id(other.id) { int i=0; name=new char [20]; while(other.name[i]!='\0') { name[i]=other.name[i]; i++; } name[i]='\0'; count++; } SingleDog::~SingleDog() { count--; delete []name; name=NULL; } int SingleDog::getCount() { return count; }