+ -
当前位置:首页 → 问答吧 → 为什么编译后调用显示函数显示的是乱码?

为什么编译后调用显示函数显示的是乱码?

时间:2011-12-15

来源:互联网

//Cow.h
#ifndef COW_H_
#define COW_H_
class Cow
{
char name[20];
char *hobby; //hobby(业余爱好);
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; //diaplay all cow data(显示cow所有的数据);
};
#endif
//Cow.cpp
//cow.cpp--methods
#include <iostream>
#include "Cow.h"
using namespace std;
Cow::Cow()
{
name[0]='\0';
hobby=0;
weight=0;

}
Cow::Cow(const char *nm,const char *ho,double wt)
{
name[20]=*nm;
hobby=new char(strlen(ho)+1);
weight=wt;

}
Cow::Cow(const Cow &c)
{
name[20]=*c.name;
hobby=new char(strlen(c.hobby)+1);
strcpy(hobby,c.hobby);
weight=c.weight;
}
Cow::~Cow()
{
delete hobby;
hobby=NULL;
}
Cow & Cow::operator=(const Cow &c)
{
if(this==&c)
return *this;//如果地址一样直接返回对象;
delete []hobby; //删除要赋值对象的地址;
name[20]=*c.name;
hobby=new char[strlen(c.hobby)+1];
strcpy(hobby,c.hobby);
name[20]=*c.name;
weight=c.weight;
return *this;

}
void Cow::ShowCow()const
{
cout<<"名字为:"<<name[20]
<<"他的爱好是:"<<hobby
<<"他的重量为:"<<weight<<endl;
}
//cowmain1
#include <iostream>
#include "Cow.h"
using namespace std;
int main()
{
cout<<"你的名字是什么?:";
char tempname[20];
cin.getline(tempname,20);
cout<<"你的爱好是什么?:";
char temphobby[20];
cin.getline(temphobby,20);
cout<<"你多重?:";
double tempweight;
cin>>tempweight;
Cow niu(tempname,temphobby,tempweight);
niu.ShowCow();
return 0;



};
最后显示乱码

作者: xuefeng7260   发布时间: 2011-12-15

作者: xuefeng7260   发布时间: 2011-12-15

cout<<"名字为:"<<name

作者: zhao4zhong1   发布时间: 2011-12-15

引用 2 楼 zhao4zhong1 的回复:
cout<<"名字为:"<<name

也一样name[20]后面的这个20是我后面加上去的,在cout<<"名字为:"<<name
的时候也这样

作者: xuefeng7260   发布时间: 2011-12-15

name[20]=*nm; //错了,越界了还.其他函数里的name赋值同这个错误.

strcpy_s(name, 19, nm);


作者: shentujun   发布时间: 2011-12-15

热门下载

更多