共有继承:
1 共有继承不改变基类成员在派生类中的。在共有继承下,基类的public成员,protect成员,private成员在派生类中保持它们在基类中相同的。
2 在派生类中定义的成员函数不能直接访问基类的私有成员,只能通过public或protect成员函数访问。
:
1 基类的private和protect都在派生类中变成了private成员,不能被派生类的外部函数访问。
2 派生类的成员函数不能访问基类的private成员,但可以访问基类的public和protect成员,并通过它们访问基类private成员。
-
//下面试私用继承
-
-
#include <iostream.h>
-
#include <string.h>
-
-
class Student
-
{
-
protected:
-
char *name;
-
int scoreNO;
-
-
public:
-
Student (char *str = "", int sn = 1) //构造函数
-
-
{
-
name = new char[strlen(str)+1]; //重新分配存储空间
-
-
strcpy(name, str); //保存数据
-
-
scoreNO = sn;
-
}
-
-
~Student(){delete []name;} //释放数组内存单元
-
-
//char * getname(){return name;}
-
//int getScoreNO(){return scoreNO;}
-
};
-
-
class GraduateStudent:protected Student //这里private和protected的作用是一样的
-
{
-
private:
-
char *instructor;
-
-
public:
-
GraduateStudent(char *str = "", int sn = 1, char *dstr = ""):Student (str, sn)
-
{
-
instructor = new char[strlen(dstr)+1];
-
strcpy(instructor, dstr);
-
}
-
~GraduateStudent(){delete []instructor;}
-
char *getInstructor(){return instructor;}
-
-
-
char * getname(){return name;}
-
int getScoreNO(){return scoreNO;}
-
};
-
-
void main()
-
{
-
GraduateStudent Lzy("周", 19, "zh");
-
cout<<Lzy.getname()<<'\t'<<Lzy.getScoreNO()<<'\t'<<Lzy.getInstructor()<<endl;
-
}
阅读(1252) | 评论(0) | 转发(0) |