| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:析构函数带来的错误
取消只看楼主 加入收藏
circlesky
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-4-5
结帖率:50%
收藏
 问题点数:0 回复次数:1 
析构函数带来的错误
各位高手,我的程序如下,如果没有析构函数(红色文字)就能正常运行,如果加上析构函数,就不能正常运行。请问为什么?如果要用析构函数的话,应该怎么写代码。谢谢!
#include<iostream.h>
#include<string.h>

class Person
{
private:
    char* name;
    int age;
    char* gender;
public:
    Person(){}
    Person(const char *name_t,const int age_t,const char *gender_t);
    Person(Person& person);
    void setName(const char *name_t);
    void setAge(const int age_t);
    void setGender(const char *gender_t);
    char* getName();
    int getAge();
    char* getGender();
    void display();
    ~Person()
    {
        delete[] name;
        delete[] gender;
    }
};
Person :: Person(const char *name_t,const int age_t,const char *gender_t)
{
    name = new char[strlen(name_t) + 1];
    strcpy(name,name_t);
    gender = new char[strlen(gender_t) + 1];
    strcpy(gender,gender_t);
    age = age_t;
}
Person :: Person(Person& person)
{
    name = new char[strlen(person.name) + 1];
    strcpy(name,person.name);
    gender = new char[strlen(person.gender) + 1];
    strcpy(gender,person.gender);
    age = person.age;   
}

void Person::setName(const char* name_t)
{
    name = new char[strlen(name_t) + 1];
    strcpy(name,name_t);
}
void Person ::setAge(const age_t)
{
    age = age_t;
}
void Person :: setGender(const char* gender_t)
{
    gender = new char[strlen(gender_t) + 1];
    strcpy(gender,gender_t);
}
char* Person :: getName()
{
    return name;
}
int Person :: getAge()
{
    return age;
}
char* Person :: getGender()
{
    return gender;
}
void Person :: display()
{
    cout << name << " | " << age << " | " << gender << endl;
}

//建立类模板Relation,该类模板生成的模板类由参数K、T决定。
template <class K,class T>
class Relation
{
private:
    K key;
    T value;
public:
    Relation(){}
    Relation(const K& k,const T& v)
    {
        key = k;
        value = v;
    }
    K getKey()
    {
        return key;
    }
    T getValue()
    {
        return value;
    }
    void setKey(const K& k)
    {
        key = k;
    }
    void setValue(const T& v)
    {
        value = v;
    }
};
//在主函数中测试
int main()
{
    Relation<char* ,Person> r;
    r.setKey("CEO");
    Person person("张三",40,"男");
    r.setValue(person);
    cout << r.getKey() <<" : ";
    r.getValue().display();
    return 0;
}
搜索更多相关主题的帖子: 函数 
2010-06-03 21:04
circlesky
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-4-5
收藏
得分:0 
回复 5楼 lintaoyn
谢谢!明白了!
2010-06-05 15:36
快速回复:析构函数带来的错误
数据加载中...
 
   



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

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