1640 Single Dog

来源:互联网 发布:虚荣虚拟摇杆软件 编辑:程序博客网 时间:2024/05/29 12:09

Description

As we all know, there are many single dogs in SYSU, especially in SDCS. Now let’s create a class named SingleDog to represent them and count the number of existing dogs.

Detail

The SingleDog has two member:
* id–the identifier of a SingleDog, once a dog is created, its identifier can’t be changed any more(so it is const);
* name–the name of a SingleDog. You should manage the memory to store the name by yourself.

And there is a static member–count. It’s used to count the number of existing dog. If a new dog is created, we increase it. If a dog is destroyed, we decrease it. You should initialize it with 0.

You can read the SingleDog.h to know more detail. (=_=)

Sample Input

2I_love_TAhelloworld

Sample Output

Number of SingleDog: 3SingleDog 1. My name is I_love_TANumber of SingleDog: 3SingleDog 2. My name is helloworldNumber of SingleDog: 1SingleDog 0. My name is wangwang

Provided Codes

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

Submission

SingleDog.cpp

#include <iostream>#include <string.h>#include "SingleDog.h"using namespace std;int SingleDog::count=0;int SingleDog::getCount(){    return count;}SingleDog::SingleDog(int id_, char* name_):id(id_){    name=new char[20];    strcpy(name,name_);    count++;}SingleDog::SingleDog(const SingleDog &other):id(other.id){    name=new char[20];    strcpy(name,other.name);    count++;}SingleDog::~SingleDog(){    delete []name;    count--;}

Standard Answer

SingleDog.cpp

#include "SingleDog.h"#include <cstring>SingleDog::SingleDog(int id_, char* name_) : id(id_) {    name = new char[strlen(name_)+1];    strcpy(name, name_);    count++;}SingleDog::SingleDog(const SingleDog &other) : id(other.id) {    name = new char[strlen(other.name)+1];    strcpy(name, other.name);    count++;}SingleDog::~SingleDog() {    delete []name;    name = NULL;    count--;}int SingleDog::getCount() {    return count;}int SingleDog::count = 0;
原创粉丝点击