//有一個使用cout<<GetName()的函式,每次執行結果都是只輸出了傳入字串的首地址,即第一個字符,想了很久沒有找到辦法,后來將函式型別改為指標函式,結果就對了,仍然不是很明白為什么可以這樣輸出,隱隱覺得函式的回傳值仍然是一個地址,也許是cout函式的作用把后面的字符也輸出了,先記下來,之后再慢慢找原因 //return型別為指標的函式,用cout輸出,回傳的是整個字串 #include<iostream> #include<cstring> using namespace std; class Person { public: char name[40]; char tel[15]; char *GetName(){return name;}; char *GetTel(){return tel;};//定義指標型函式,輸出才是整個字串,非常重要!!! ,形參是地址,所以實參傳入的也是地址 Person(char *Name,char*Tel){strcpy(name,Name);strcpy(tel,Tel);};// }; class Student { private: char major[18]; public: Student(char*Major){strcpy(major,Major);}; char *GetMajor(){return major;}; }; class Teacher { private: char course[15]; public: Teacher(char*Course){strcpy(course,Course);} char *GetCourse(){return course;}; }; //派生類:繼承Person和Student,Teacher類 class StudentTeacher:public Person,public Student, public Teacher { public: StudentTeacher(char*name,char*tel,char*major,char*course):Person(name,tel),Student(major),Teacher(course) //基類的初始化,使用初始化串列一次按照繼承順序給基類初始化 {}; }; int main() { char name[40], tel[15], major[18], course[15];// 分別代表名字、電話、專業、課程 cin >> name >> tel >> major >> course; StudentTeacher st(name, tel, major, course); cout << st.GetName() << endl; cout << st.GetTel() << endl; cout << st.GetMajor() << endl; cout << st.GetCourse() << endl; cin >> name >> tel; //修改名字和電話 strcpy(st.name, name); strcpy(st.tel, tel); cout << st.GetName() << endl; cout << st.GetTel() << endl; cout << st.GetMajor() << endl; cout << st.GetCourse() << endl; return 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/79241.html
標籤:C++
