#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class Student
{public:
void display()
{cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;}
protected:
int num;
string name;
char sex;
};
class Student1:protected Student
{public:
void display1()
{cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
cout<<"address:"<<addr<<endl;}
private:
int age;
string addr;
};
int main()
{Student1 stud1;
stud1.display1();
stud1.num=10023;
return 0;
}
#include<iostream>
#include<string>
using namespace std;
class Student
{public:
void display()
{cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;}
protected:
int num;
string name;
char sex;
};
class Student1:protected Student
{public:
void display1()
{cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
cout<<"address:"<<addr<<endl;}
private:
int age;
string addr;
};
int main()
{Student1 stud1;
stud1.display1();
stud1.num=10023;
return 0;
}
要想用子类的对象访问必须把Student类的num改为public成员,Student1的继承方式也改为public
stud1.num=10023;
外部是不能访问类的protect和private成员的。
外部是不能访问类的protect和private成员的。
这是什么意思?
protect和private成员要使用类的成员函数去访问,如果把num定义为protected,通常就要给Student定义两个public型的成员函数来访问它,一个赋值,一个取值
void Student::SetNum(int iVal)
{
num = iVal;
}
int Student::GetNum()
{
return num;
}
这样stud1.num=10023;就要改为stud1.SetNum(10023);同时继承方式也必须改为public,