关于子类继承父类的私有成员,以及访问的探讨:
sub.h文件:
#ifndef _SUB_H
#define _SUB_H
#include<stdlib.h>
#include<stdio.h>
class subbase
{
public:
subbase(){};
void init();
int getage();
void setdata(int data);
private:
int age;
};
class sub:public subbase
{
public:
int getold();
public:
int old;
};
#endif
sub.cpp文件:
#include"sub.h"
#include<iostream>
using namespace std;
void subbase::init()
{
this->age = 0;
}
int subbase::getage()
{
return this->age;
}
void subbase::setdata(int data)
{
this->age = data;
}
int sub::getold()
{
return this->old;
}
int main()
{
subbase base;
base.setdata(2);
cout<<base.getage()<<endl;
sub subt;
subt.init();
cout<<subt.getage()<<endl;
subt.setdata(3);
cout<<subt.getage()<<endl;
return 0;
}
结果显示:
分析:
从结果可以知道,子类是可以继承父类的私有成员,也就是子类也拥有了父类的私有成员,对于访问的权限只能是私有的。
子类在继承父类的方法这个比较特殊,从结果上看是子类继承的方法是将父类的所有类名修改成子类了,包括this指针也是子类的。
如下:
父类中是这样的:
void subbase::init()
{
this->age = 0;
}
子类应该是这样的了:?
void sub::init()
{
this->age = 0;
}