1
回答
C++继承与派生的练习,问题出在字符数组的指针
华为云实践训练营,热门技术免费实践!>>>   

这是题目要求:定义一个基类Person,数据成员包含字符指针类型变量Name用于保存姓名,函数成员包括默认构造函数、带参构造函数用于初始化数据成员和输出姓名的成员函数PrintName()。从Person类派生出Student类,增加长整型数据成员Number用于保存学号,函数成员包括带参构造函数用于初始化数据成员和输出学生信息的成员函数PrintInfo()。要求:在函数PrintInfo()中需要调用基类的成员函数PrintName()。

测试程序:
  #include <iostream>
  #include <string.h>
  using namespace std;
  class Person
  {
  char *Name;
  public:
  Person(){};
  Person( char *name );
  void PrintName();
  };
  Person::Person( char *name )
  {
  // 请补充完整
  }
  void Person::PrintName()
  {
  // 请补充完整
  }
  class Student : public Person
  {
  public:
  Student( char *name, long number );
  void PrintInfo();
  private:
  long Number;
  };
  //请补充完整Student类的构造函数Student(char* name, long number)
  void Student::PrintInfo()
  {
  // 请补充完整
  }
  int main()
  {
  Student b("ssh",100);
  b.PrintInfo();
  return 0;
  }
  无需输入,输出结果为:
  Name of Student: ssh
  Number of Student: 100

我的代码如下,结果可以跑出来,自动检测的系统是判断有问题。请求:

1.帮忙挑出错误,我觉得很奇怪呀,题目开头加了sting.h,我却没用上,是不是这边错了。

2.关于字符指针赋值那块,我真是有点晕啊,到底该怎么赋值,是只用数组名Name=数组名name就好,为什么不是*Name=&name,那个意味着什么。

#include <iostream>
#include <string.h>
using namespace std;
class Person 
{
char * Name;
public:
	Person(){};
	Person(char * name);
	void PrintName();
};
Person::Person (char * name)
{
	Name=name;
}
void Person::PrintName()
{
	cout<<"Name of Student:"<<Name<<endl;
}
class Student:public Person
{
public:
	Student (char * name,long number);
	void PrintInfo();
private:
	long Number;
};
Student::Student(char * name,long number):Person(name)
{	
	Number=number;
}
void Student::PrintInfo()
{
	this->PrintName();
	cout<<"Number of Student:"<<Number<<endl;
}
int main() 
{
	Student b("ssh",100);
	b.PrintInfo();
	return 0;
}

<无标签>
举报
caosz
发帖于4年前 1回/239阅
顶部