我的代码:
#include<iostream>
#include<cstring>
using namespace std;
class Person{
char *s;
public:
Person()
{
s="未命名";
}
Person(char *p)
{
s=p;
}
void PrintName()
{
cout<<s<<endl;
}
};
class Student:public Person{
long int Number;
public:
Student(int q,char *p):Person(p)
{
Number=q;
}
void PrintInfo()
{
Person::PrintName();
cout<<Number<<endl;
}
};
int main()
{
Student stu1(1001,"zhangsan");
stu1.PrintInfo();
}
遇到的问题
两个字符型指针间的赋值问题。
(需要将代码中输入的*p赋值给*s)
解决方法:
最早的想法是使用Strcpy函数,后来发现程序不能输出名字。
因为strcpy被复制的变量需要是已知长度的,如果坚持使用strpcy函数的话 需要给指针b申请一个空间。动态申请内存也行。
我使用的方法是将p的地址赋值给s。
这样做有一个缺点,如果a指针被释放掉的话,程序就执行不了了。