VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 137|回复: 6

[已解决]请大虾们看一下,我这个代码的问题出在哪,为什么运行的时候,就崩溃了

[复制链接]
36_avatar_middle
最佳答案
0 
在线会员 发表于 2020-2-27 19:42:41 | 显示全部楼层 |阅读模式
主文件:
#include"cstudent.h"
int test()
{
   cstudent stud_1("zhangsan", 'f', 1001, 20);
   cstudent stud_2;
   stud_2 = stud_1;
}

int main()
{
   cstudent::master;//调用static成员变量(函数)
    cstudent stud1("zhangsan", 'f', 1001, 20);
    cstudent stud2("lisi",'2',2001,10);
    test();
    return 0;
}
头文件:
#include<iostream>
#include<string.h>
using namespace std;
class cstudent
{
        public:
                char* name;
                char sex;
                int num;
                int age;
                static char master[20];//static函数、变量,在类内声明,在类外初始化
        cstudent(char* tname,char tsex,int tnum,int tage);
        cstudent();
        cstudent& operator=(const cstudent& std);//符号的重载
        ~cstudent();
};

头文件的定义实现:
#include"cstudent.h"
char cstudent::master[20];
cstudent::cstudent(char* tname,char tsex,int tnum,int tage):sex(tsex),num(tnum),age(tage)
{
        name=NULL;
        int len=0;
        if(name) len=strlen(tname);
        if(len>0)
        {
                name=new char[len+1];
                memset(name,0,len+1);
                strcpy(name,tname);
        }

}
cstudent::cstudent(){}
cstudent::~cstudent()
{
        if(name)
        {
                delete []name;
                name=NULL;
        }
        cout<<"cstudent::~cstudentò&#209;&#214;′DD"<<endl;
}
cstudent& cstudent::operator=(const cstudent& std)//·&#251;o&#197;μ&#196;&#214;&#216;&#212;&#216;
{
         if (name)
    {
        delete []name;
        name = NULL;
    }

    int name_len = strlen(std.name) + 1;
    name = new char[name_len];
    memset(name, 0, name_len);

    strcpy(name, std.name);
    sex = std.sex;
    num = std.num;
    age = std.age;
    return *this;
}
最佳答案
18_avatar_small
2020-2-27 21:04:37
painz0 发表于 2020-2-27 19:50
我是在dev和codeblocks 上运行的
  1.   name=NULL;
  2.   int len=0;
  3.   if(name) len=strlen(tname);
复制代码

改为
  1. name = NULL;
  2. int len = strlen(tname);
复制代码




上一篇:多线程内存池速率多少才及格?
下一篇:大白求助vs工具问题
18_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-2-27 21:04:37 | 显示全部楼层    本楼为最佳答案   
bestAnswer
painz0 发表于 2020-2-27 19:50
我是在dev和codeblocks 上运行的
  1.   name=NULL;
  2.   int len=0;
  3.   if(name) len=strlen(tname);
复制代码

改为
  1. name = NULL;
  2. int len = strlen(tname);
复制代码
36_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-27 19:50:46 来自手机 | 显示全部楼层
我是在dev和codeblocks 上运行的
58_avatar_middle
最佳答案
43 
online_vip 发表于 2020-2-27 20:29:21 | 显示全部楼层
painz0 发表于 2020-2-27 19:50
我是在dev和codeblocks 上运行的

用VS吧,VS有很强大的检错,调试功能。
36_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-27 20:51:29 来自手机 | 显示全部楼层
thzzl 发表于 2020-2-27 20:29
用VS吧,VS有很强大的检错,调试功能。

嗯,只能先用vs看看了
36_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-27 21:08:09 来自手机 | 显示全部楼层
天仿思冗 发表于 2020-2-27 21:04
改为

嗯嗯,谢谢,我试试看
58_avatar_middle
最佳答案
43 
online_vip 发表于 2020-2-27 21:09:28 | 显示全部楼层
painz0 发表于 2020-2-27 20:51
嗯,只能先用vs看看了

就是这题给你答案,还有下一题,所以建议安装个VS,检错,调试都方便,等有基础后用什么都可以。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-27 21:08

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表