请问一个C++笔试题

请教一个C++笔试题#includeiostreamusingnamespacestdclassPeople{private:charname[20]public:People

请教一个C++笔试题
#include   <iostream>
using   namespace   std;

class   People
{
private:
char   name[20];
public:
People(char*   str){strcmp(name,str);
}
void   Hello()
{
cout < < "People: " < <name < <endl;
}
protected:

};

class   Teach   :   public   People
{
private:
char   name[20];
public:
Teach(char*   str):People( "Teach "){strcmp(name,str);
}
void   Hello()
{
cout < < "Teach: " < <name < <endl;
}
};

class   Student   :   public   People
{
private:
char   name[20];
public:
Student(char*   str):People( "Student "){strcmp(name,str);
}
void   Hello()
{
cout < < "Student: " < <name < <endl;
}
};
void   main()
{
People   *p;
People   a( "wangwei ");
Teach   b( "yuyuan ");
Student   c( "qiaobing ");
p   =   &a;
p   -> Hello();

p   =   &b;
p   -> Hello();

p   =   &c;
p   -> Hello();
}

[解决办法]
strcmp 只是比较 两个c-string , 并不会给 name 赋值, 因此所有的 name 都没有初始值,
输出一堆乱码...