- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
派生说明
派生说明
当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定。
1.如果子类从父类继承时使用的继承限定符是public,那么
(1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的protected成员成为子类的protected成员,只允许子类成员访问;
2.如果子类从父类继承时使用的继承限定符是private,那么
(1)父类的public成员成为子类的private成员,只允许子类成员访问;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的protected成员成为子类的private成员,只允许子类成员访问;
3.如果子类从父类继承时使用的继承限定符是protected,那么
(1)父类的public成员成为子类的protected成员,只允许子类成员访问;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的public成员成为子类的protected成员,只允许子类成员访问;
至于类中不同成员(public、private和protected)的访问状态就不细说了。
c++访问权限和派生继承
在基类中,public表示成员是公有的:可以由程序中任何函数访问。所以公有成员一般是成员函数,它提供了外部程序与类的接口功能,用户通过公有成员访问该类对象中的数据。
private表示成员是私有的,只允许本类的成员函数和类的友元函数访问,任何外部程序对它访问都是非法的,所有它往往是用来描述该类对象属性的一些数据成员,是类中被隐藏的部分。
protect表示成员是受保护类型的,与私有成员在一般情况下含义相同,它们的区别是,在类的继承中对产生的新类影响不同。
第一:private, public, protected 访问标号的访问范围。
private:只能由1.该类中的函数、2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。
protected:可以被1.该类中的函数、2.其友元函数访问 3.子类的函数。
但不能被该类的对象访问。
public:可以被1.该类中的函数、2.其友元函数访问 3.子类的函数、也可以由4.该类的对象访问。
只有公有成员才能在类的外部访问。如
class A
{
private:
int a;
public:
int b;
protected:
int c;
};
A ca;
ca.a //error
ca.b // ok
ca.c //error
class B :public A
{
public:
int d;
}
B cb;
cb.b; //ok
cb.c //error。虽然c也是B的成员,但c在被继承的时候变成私有或者受保护的成员了。
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。
派生类的生成过程:
class employee
{
protect:
char *name; //姓名
int individualEmpNo; //个人编号
int grade; //级别
float accumPay; //月薪总额
static int employeeNo; //本公司职员编号目前最大值
public:
employee();
~employee();
void pay(); //计算月薪函数
void promote(int); //升级函数
void displayStatus(); //显示人员信息
};
class technician:public employee
{
private:
float hourlyRate; //每小时酬金
int workHours; //当月工作时数
public:
technician(); //构造函数
void pay(); //计算月薪函数
void displayStatus(); //显示人员信息
};
分析派生新类这个过程,其继承和派生机制的主要目的是实现代码的重用和扩充。实际是经历了三个步骤:吸收基类成员、改造基类成员、添加新的成员。
1.吸收基类成员
第一步是将基类的成员全盘接收:包含了它的所有基类中除构造和析构函数之外的所有成员。
这里派生类technician继承了基类employee的除构造和析构函数以外的所有成员:
name; individualEmpNo; grade; accumPay; employeeNo;
pay(); prom
您可能关注的文档
- 期货交易金玉良言.doc
- 木乃伊王妃.doc
- 木焦油提取加工技术.doc
- 木秀于林,风必摧之,堆高于岸,流必湍之.doc
- 木蝴蝶《中国药典》.doc
- 木质家具的油漆调色方法汇总,乱码无视,不影响阅读.doc
- 木门的选择.doc
- 本土“教父”中国式管企业培训理.doc
- 本博客管理员:芝加哥大学“中国经济改革研讨会”掠.doc
- 本土“教父”柳传志的企业培训中国式管理.doc
- 多点监督与特征融合校准:目标检测算法的创新与突破.docx
- 南宁市门诊HIV_AIDS患者抑郁状况剖析与影响因素探究.docx
- 医疗过失犯罪中客观归责理论的精准适用与深度解析.docx
- 南宁市低碳经济发展研究.docx
- 清解瘀毒胶囊对脑出血大鼠血红蛋白毒性作用及机制探究.docx
- 内蒙古赤峰市元宝山区农村小学教师培训:现状、问题与突破路径.docx
- 泉州开发区国有资产投资经营有限公司发展战略研究:基于区域经济与市场环境的分析.docx
- 能源利用效率与经济增长方式的深度耦合及中国战略抉择.docx
- 分布式信号波达方向 - 时延联合估计算法的深度剖析与创新探索.docx
- 新媒体环境下大学校园精神传播的创新变革.docx
文档评论(0)