学C++遇到的小疑点

学C++遇到的小问题
C/C++ code
#include <iostream>
#include <string.h>
class Person
{
private:
    char m_pName[12];
    char m_pID[12];
    bool m_bMan;

public:
    void SetData(char *pName, char *pID, bool bMan)
    {
        int n = strlen(pName);
        strncpy(m_pName, pName, n);    
        m_pName[n] = '\0';
        n = strlen(pID);
        strncpy(m_pID, pID, n);
        m_pID[n] = '\0';
        m_bMan = bMan;
    }
    void OutPut()
    {
        std::cout<<"姓名: "<<m_pName<<std::endl;
        std::cout<<"编号: "<<m_pID<<std::endl;
        char *str = m_bMan?"男":"女";
        std::cout<<"性别: "<<str<<std::endl;
    }
};
class Student: private Person    // 私有继承
{
private:
    double m_dbScore[3];

public:
    void SetStudentData(char *pName, char *pID, bool bMan)
    {
        SetData(pName, pID, bMan);    // 此时基类中的成员函数是派生类的保护成员函数,只有派生类的成员函数可以调用
    }
    void InputScore(double score1, double score2, double score3)
    {
        m_dbScore[0] = score1;
        m_dbScore[1] = score2;
        m_dbScore[2] = score3;
    }
    void Print()
    {
        OutPut();
        for(int i=0; i<3; i++)
        {
            std::cout<<"成绩"<<i+1<<":"<<m_dbScore[i]<<std::endl;
        }
    }
};
class Teacher: private Person
{
private:
    int m_nYear;

public:
    void SetTeacherData(char *pName, char *pID, bool bMan)
    {
        SetData(pName, pID, bMan);    // 此时基类中的成员函数是派生类的保护成员函数,只有派生类的成员函数可以调用
    }
    void InputYear(int nYear)
    {
        m_nYear = nYear;
    }
    void Print()
    {
        OutPut();
        std::cout<<"教龄: "<<m_nYear<<" 年"<<std::endl;
    }
};
int main()
{
    Student cStu;
    cStu.SetStudentData("LiMing", "4654651", 1);
    cStu.InputScore(98, 97, 96);
    cStu.Print();

    std::cout<<std::endl;

    Teacher cTea;
    cTea.SetTeacherData("ChaoLi", "543687", 0);
    cTea.Print();
    cTea.InputYear(2);
    return 0;
}


姓名: LiMing
编号: 4654651
性别: 男
成绩1:98
成绩2:97
成绩3:96

姓名: ChaoLi
编号: 543687
性别: 女
教龄: -858993460 年这里年份为什么没有显示?

------解决方案--------------------
C/C++ code
    cTea.Print();//你先Print了后设置了,肯定是没有显示啊
    cTea.InputYear(2);

------解决方案--------------------
建议你在初始化的时候设置m_nYear=0