标题:new 的使用,能运行但不知为何会弹出Dug Assertion Failed!
取消只看楼主
A306452792
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2010-8-18
结帖率:100%
已结贴  问题点数:20 回复次数:2 
new 的使用,能运行但不知为何会弹出Dug Assertion Failed!
程序代码:
#include <iostream>
using namespace std;

class Book
{
private:
    int pages;
         double price;
    char *bookname, *authors,*publishing_house;
public:
    Book(){
    bookname=new char[50];
    authors=new char[50];   
    publishing_house=new char[50];   
    }
    ~Book(){
    delete[](bookname);(bookname)=NULL;
    delete[]authors;(authors)=NULL;
    delete[]publishing_house;(publishing_house)=NULL;


    }
    void getXxx();
    void setXxx(char *b,char *a,int pa,char*p, double pr);
};
void Book::setXxx(char *b,char *a,int pa,char*p, double pr){
bookname=b;
authors=a;
pages=pa;
publishing_house=p;
price=pr;
}

void Book::getXxx(){
    cout<<"书名:"<<bookname<<" 作者:"<<authors<<" 页数:"<<pages<<""<<" 出版社: "<<publishing_house<<" 价格:"<<price<<endl;
}

int main()
{
    cout<<"定义的两本书的信息:"<<endl;
  Book mybook;
  mybook.setXxx("《C++程序设计》","谭浩强编著",485,"清华大学出版社",36.00);
    mybook.getXxx();
    cout<<endl;
mybook.setXxx("《吹牛大王历险记》","拉斯伯等编著",149,"天津人民出版社",12.80);
    mybook.getXxx();

 
    return 0;
}
搜索更多相关主题的帖子: Failed 
2011-03-30 22:06
A306452792
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2010-8-18
得分:0 
我想到了,好像直接把那个析构函数放在void setXxx()函数之后就行了,因为构造函数刚分配地址,void setXxx()还没使用就用析构函数删除了内存,导致的错误吧.
2011-03-31 11:27
A306452792
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2010-8-18
得分:0 
的确,因为刚学C++,很多不会
2011-03-31 19:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-335241-1-1.html




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

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