c++面向对象编程初学 问题(大佬看我)
#include<iostream>
using namespace std;
class Employee
{protected:char *address,*shi,*province,*post;
public:Employee(char _address[100],char _shi[100],char _province[100],char _post[100]);
void changename();
};
class Name{
protected:
char firstname[20],lastname[20];
int x,y,z;
char *m;
public:
Name(char *p){
cin>>firstname>>lastname;
p=firstname;
for(int i=0;i<20;i++)
{
if(p[i]='\0')
x=i;break;
}
z=0;
for(int i=x;i<40;i++)
{
p[i]=lastname[z];
z++;
if(p[i]='\0')
break;
}
m=p;
}
void display()
{
for(int i=0;i<40;i++)
cout<<m[i]<<endl;
}
};
Employee::Employee(char _address[100],char _shi[100],char _province[100],char _post[100])
{address=_address,shi=_shi,province=_province,post=_post;}
void Employee::changename(){}
int main()
{ char *a="no name";
Name na(a);
na.display();
}
求大佬帮我看看为什么不管输入什么都没输出结果啊??
#include<iostream>
using namespace std;
class Employee
{protected:char *address,*shi,*province,*post;
public:Employee(char _address[100],char _shi[100],char _province[100],char _post[100]);
void changename();
};
class Name{
protected:
char firstname[40];
char lastname[20];
int x,y,z;
char *m;
public:
Name(char *p){
cin>>firstname>>lastname;
p=firstname;
for(int i=0;i<20;i++)
{
if(p[i]=='\0')
{
x=i;
break;
}
}
z=0;
for(int i=x;i<40;i++)
{
p[i]=lastname[z];
z++;
if(p[i]=='\0')
break;
}
m=p;
}
void display()
{
for(int i=0;i<40;i++)
{
if(m[i] == 0)
break;
cout<<m[i];
}
}
};
Employee::Employee(char _address[100],char _shi[100],char _province[100],char _post[100])
{address=_address,shi=_shi,province=_province,post=_post;}
void Employee::changename(){}
int main()
{
char *a="no name";
Name na(a);
na.display();
}
if(p[i]=='\0')
{
x=i;
break;
}
这里要加大括号,不然break不在if里,循环都不继续执行就跳出了
if(p[i]='\0')改为 if(p[i]=='\0'),其它类似
p[i]=lastname[z]; 这会越界访问的。建议把firstname数组大小定义为40
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632