C++继承有关问题

C++继承问题
#include<iostream>
using namespace std;
#include<string>

class Student
{
public:
Student();
Student(int num, string name, string sex, int age, string addr);
Student(int num);
Student(const Student &a);
~Student();
  void Display1(void);

protected:
int m_num;
string m_name;
string m_sex;
int m_age;
string m_addr;
};

Student::Student(void)
{
m_num=0;
m_name="\0";
m_sex="\0";
m_age=0;
m_addr="\0";
}

Student::Student(int num, string name, string sex, int age, string addr)
{
m_num=num;
m_name=name;
m_sex=sex;
m_age=age;
m_addr=addr;
}

Student::Student(int num)
{
m_num=num;
m_name="\0";
m_sex="\0";
m_age=0;
m_addr="\0";
}

Student::Student(const Student &a)
{
m_num=a.m_num;
m_name=a.m_name;
m_sex=a.m_sex;
m_age=a.m_age;
m_addr=a.m_addr;
}

Student::~Student(void)
{
cout<<"jiaoyang is a good boy"<<endl;
}

void Student::Display1(void)
{
cout<<m_num<<m_name<<m_sex<<m_age<<m_addr<<endl;
}






class Teacher:private Student/*这里我把private改为public就对了。。。。呵呵什么原因。。?。*/
{
public:
Teacher();
Teacher(int num, string name, string sex, int age, string addr, double wage);
void Display2(void);
private:
double m_wage;

};

Teacher::Teacher(void):Student()
{
m_wage=0;
}
Teacher::Teacher(int num, string name, string sex, int age, string addr, double wage):Student(num, name, sex, age, addr)
{
m_wage=wage;
}

void Teacher::Display2(void)
{
Display1();
cout<<m_wage<<endl;
}

int main()
{
Teacher a(1,"jiaoyang","boy",4,"nanchang",4);
Student b(1,"jiaoyang","boy",4,"nanchang");
Student *p=&a;
p->Display1();
return 0;
}


问题在注释部分。。。。谢谢大神。。。

------解决方案--------------------
探讨

main函数是主调函数。程序的入口。

------解决方案--------------------
探讨

http://blog.csdn.net/wuliming_sc/article/details/3827743
private继承会将基类中的public和protected可见性的成员修改成为private可见性
teachar的继承的所有成员都是private的了。外部没发调用。