简单的问题:相同的成员函数运行两次,第二次总是不能运行。请高手指点。

zhanghaifeng 2002-01-22 02:38:47
程序运行时,编译和连接均无问题,但运行时总是出现如下错误:
Debug error!
DAMAGE:after Normal block(#34)at 0x00430Ec0.
源程序如下,请高手指点一二。

#include<iostream.h>
#include<string.h>


class Product
{

public:
char *name; //产品名称
int price; //产品单价
int quantity; //剩余产品数量
Product(char *n,int p,int q);
~Product();
void buy(int money);
void get()const;
};

Product::Product(char *n,int p,int q)
{
name=new char(strlen(n)+1);
strcpy(name, n);
price=p;
quantity=q;
}

Product::~Product()
{
if (name)
delete []name;
name=0;
}

void Product::buy(int money)
{
int n,r;
n=money/price;
if(n>quantity)
cout<<"数量不够!"<<endl;
else
{
quantity-=n;
r=money%price;
cout<<"产品: "<<name<<" 单价 "<<price<<" 元 顾客";
cout<<money<<"元, 买了"<<n<<"台,剩余"<<r<<"元"<<endl;
}
}

void Product::get()const
{
cout<<"产品: "<<name<<" 单价:"<<price
<<"元 剩余:" <<quantity<<"台\n";
}

void main()
{
Product p1("电视机",2000,15);
p1.buy(7000);
p1.get();
p1.buy(4500);
p1.get();
}
...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghaifeng 2002-01-23
  • 打赏
  • 举报
回复
thanks a lot
lhj 2002-01-22
  • 打赏
  • 举报
回复
请改
构造函数得new
name=new char[strlen(n)+1];

析构函数得delete
delete name;

即可

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧