| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1424 人关注过本帖
标题:运行报错
取消只看楼主 加入收藏
C00000001
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2021-5-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
运行报错
头文件
#ifndef COW_H_
#define COW_H_
namespace COW
{
    class Cow
    {
    private:
        char name[20];
        char* hoppy;
        double weight;
    public:
        Cow();
        Cow(const char* nm, const char* ho, double wt);
        Cow(const Cow& c);
        ~Cow();
        Cow& operator=(const Cow& c);
        void ShowCow()const;
    };
}
#endif
源代码1
#include"stack.h"
#include<iostream>
#include<cstring>
namespace COW
{
    Cow::Cow()
    {
        const char* temp = "no date";
        hoppy = new char(strlen(temp) + 1);
        for (int i = 0; i < strlen(temp)+1 ; i++)
            name[i] = hoppy[i] = temp[i];
        name[strlen(temp) ] = hoppy[strlen(temp) ] = '\0';
        weight = 0;
    }
    Cow::Cow(const char* nm, const char* ho, double wt)
    {
        for (int i = 0; i < strlen(nm) + 1; i++)
            name[i] = nm[i];
        name[strlen(nm) + 1] = '\0';
        hoppy = new char(strlen(ho) + 1);
        for (int i = 0; i < strlen(ho)+1; i++)
            hoppy[i] = ho[i];
        hoppy[strlen(ho)] = '\0';
        weight = wt;
    }
    Cow::Cow(const Cow& c)
    {
        for (int i = 0; i < strlen(c.name); i++)
            name[i] = c.name[i];
        name[strlen(c.name) + 1] = '\0';
        hoppy = new char(strlen(c.hoppy) + 1);
        for (int i = 0; i < strlen(c.hoppy)+1; i++)
            hoppy[i] = c.hoppy[i];
        hoppy[strlen(c.hoppy)] = '\0';
        weight = c.weight;
    }
    Cow::~Cow()
    {
        std::cout << name << " hoppy:" << hoppy << " object had deleted\n";
        delete[]hoppy;
    }
    Cow& Cow::operator=(const Cow& c)
    {
        if (this == &c)
            return *this;
        delete[]hoppy;
        for (int i = 0; i < strlen(c.name); i++)
            name[i] = c.name[i];
        name[strlen(c.name) + 1] = '\0';
        hoppy = new char(strlen(c.hoppy) + 1);
        for (int i = 0; i < strlen(c.hoppy); i++)
            hoppy[i] = c.hoppy[i];
        hoppy[strlen(c.hoppy) + 1] = '\0';
        weight = c.weight;
    }
    void Cow::ShowCow()const
    {
        std::cout << "Name:" << name << std::endl;
        std::cout << "Hoppy:" << hoppy << std::endl;
        std::cout << "Weight:" << weight << std::endl;
    }
}
源代码2
#include<iostream>
#include"stack.h"
int main()
{
    {
        using std::cout;
        using std::cin;
        using std::endl;
        using COW::Cow;
        Cow st1;
        
        Cow st2("chen", "music", 60);
        
        Cow st3 = st2;
        st1.ShowCow();
        st2.ShowCow();
        st3.ShowCow();
    }
    std::cout << "Done!\n";
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

我想的是最后结束后
显示:
 chen music objected had deleted
 chen music objected had deleted
no data no data objected had deleted
Done!
搜索更多相关主题的帖子: const strlen char name std 
2021-06-01 21:22
快速回复:运行报错
数据加载中...
 
   



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

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