私有继承
在声明一个派生类的时候将基类的继承方式指定为 private 的 , 称为私有继承 ,用私有继承方式建立的派生类称为私有派生类,其基类称为私有基类.
私有继承中的公用成员和保护成员在派生类中的访问属性相当于派生类中的私有成员 ,即派生类的成员函数能访问它们 ,而在派生类外是不能访问他们的.私有基类中的私有成员在派生类中成为不可访问成员,只有基类的成员函数可以引用它们 .私有基类的成员可以被基类成员函数访问 , 但不能被派生类的成员函数访问, 而私有基类中的公有成员函数可以通过派生类的共有成员函数访问 ,因此,如果我们要访问私有基类中的成员 ,只能通过派生类的成员函数,间接的访问私有基类中的公用成员函数 ,而不同直接访问基类中的private 成员数据 .这就体现了封装性 .
#include <iostream>
#include <cstdio>
using namespace std ;
class Student {
public :
void get_value()
{
cin >> num >>name >>sex ;
}
void display()
{
cout <<"num "<<num <<endl;
cout <<"name "<<name <<endl ;
cout <<" sex "<<sex ;
}
private :
int num ;
string name ;
char sex ;
};
class Student1:private Student{
public :
void get_value1(){
cout << " 这是私有基类中的公用成员函数 get_value()" <<endl ;
get_value();
cout <<" 这是派生类中的" <<endl;
cin >>age >>addr ;
}
void display_1(){
cout <<"这是私有基类 中的公用成员函数 isplay()"<<endl;
display();
cout <<endl;
cout <<" 派生类 age "<<age <<endl;
cout <<" 派生类 address "<<addr <<endl ;
}
private :
int age ;
string addr ;
};
int main()
{
Student1 a ;
a.get_value1();
a.display_1() ;
return 0 ;
}
其中 代码段 :
void get_value1(){
cout << " 这是私有基类中的公用成员函数 get_value()" <<endl ;
get_value();
cout <<" 这是派生类中的" <<endl;
cin >>age >>addr ;
}
这就是通过在派生类中的public 成员函数中调用了基类中的成员函数,进而间接访问了基类中的私有成员数据 .
标签:cout,访问,继承,成员,基类,c++,---,私有,派生类 From: https://blog.51cto.com/u_15970235/6064118