读书人

类程序有4个警告空间释放有有关问题

发布时间: 2012-03-15 11:50:38 作者: rapoo

类程序有4个警告,空间释放有问题!?//附带实现+ 重载

C/C++ code
#include <iostream>#include <cstring>using namespace std;class anything{public:    anything():name(),age(){}    anything(char* cp_name,void* cp_age):name(cp_name),age(cp_age)    {        name = new char[strlen(cp_name)+1];        strcpy(name,cp_name);        age=static_cast<void*>(cp_age);    }    anything(const anything& anything01)    {        name = new char[strlen(anything01.name)+1];        strcpy(name,anything01.name);        char* age_member = (char*)anything01.age;        char* age_str = new char[strlen(age_member)+1];        strcpy(age_str,age_member);        age = (void*)age_str;        delete[] age_member;        delete[] age_str;    }  /*   anything operator+ (const anything& anything01)    {        char* swap = new char[strlen(name)+strlen(anything01.name)+1+1];        strcpy(swap,name);        char* c = ",";        strcat(swap,c);        strcat(swap,anything01.name);        char* buf = new char[256];        sprintf(buf,"%s,%s",this->(*static_cast<int*>(age)),anything01.(*static_cast<int*>(age)));        delete buf;        delete swap;        delete c;        return anything(swap,static_cast<void*>(buf));    }*/    ostream& operator>>(ostream&os)    {        return os<<name<<" "<<*static_cast<int*>(age);    }    ~anything()    {        delete[] name;        name=NULL;        delete[] age;        age=NULL;    }private:    char* name;    void* age;};class anything_sub:public anything{public:private:    int score;};int main(){    int object_age = 19,object_age01=25,object_age02=30;    anything anything01("David",static_cast<void*>(&object_age));    anything01>>cout<<endl;    anything anything02("Jackson",static_cast<void*>(&object_age01)),anything03("Edward",static_cast<void*>(&object_age02)),anything04;    anything04=anything02;    anything04>>cout<<endl;    return 0;}


[解决办法]
既然是C++,为何不用std::string?
[解决办法]
safe

读书人网 >C++

热点推荐