| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1653 人关注过本帖
标题:一道类的题目(为什么会超时?)
只看楼主 加入收藏
ClearningC
Rank: 2
等 级:论坛游民
帖 子:98
专家分:43
注 册:2016-10-26
结帖率:89.47%
收藏
已结贴  问题点数:3 回复次数:1 
一道类的题目(为什么会超时?)
Sample Input
2
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;
}
搜索更多相关主题的帖子: wangwang 
2017-03-19 00:29
luoj75
Rank: 2
等 级:论坛游民
帖 子:17
专家分:55
注 册:2016-11-28
收藏
得分:3 
int SingleDog::count=0;
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()
{
    count--;
    delete []name;
}
int SingleDog::getCount()
{
    return count;
}
2017-03-20 23:54
快速回复:一道类的题目(为什么会超时?)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.804244 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved