为什么编译后调用显示函数显示的是乱码?
时间: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;
};
最后显示乱码
#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
cout<<"名字为:"<<name
也一样name[20]后面的这个20是我后面加上去的,在cout<<"名字为:"<<name
的时候也这样
作者: xuefeng7260 发布时间: 2011-12-15
name[20]=*nm; //错了,越界了还.其他函数里的name赋值同这个错误.
strcpy_s(name, 19, nm);
strcpy_s(name, 19, nm);
作者: shentujun 发布时间: 2011-12-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28