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