学C++遇到的小疑点
学C++遇到的小问题
姓名: LiMing
编号: 4654651
性别: 男
成绩1:98
成绩2:97
成绩3:96
姓名: ChaoLi
编号: 543687
性别: 女
教龄: -858993460 年这里年份为什么没有显示?
------解决方案--------------------
- 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