返回指针的函数
//有一个使用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;
}