当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>C++箴言:谨严利用私有担当</b>[VC/C++编程]

赞助商链接



  本文“<b>C++箴言:谨严利用私有担当</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在《C++箴言:确保公开担当模拟“is-a”》一文中阐述了 C++ 将 public inheritance(公有担当)视为一个 is-a 关系.当给定一个 hierarchy(担当体系),此中有一个 class Student 从一个 class Person 公有担当,当为一个函数调用的成功而有必要时,需求将 Students 隐式转型为 Persons,它通过向编译器展示来做到这一点.用 private inheritance(私有担当)替换 public inheritance(公有担当)把这个例子的一部份重做一下是值得的:

class Person { ... };
class Student: private Person { ... }; // inheritance is now private
void eat(const Person& p); // anyone can eat
void study(const Student& s); // only students study
Person p; // p is a Person
Student s; // s is a Student
eat(p); // fine, p is a Person
eat(s); // error! a Student isn't a Person

很明显,private inheritance(私有担当)不意味着 is-a.那么它意味着什么呢?

“喂!”你说:“在我们得到它的含义之前,我们先看看它的行为.private inheritance(私有担当)有怎样的行为呢?”好吧,支配 private inheritance(私有担当)的第一个法则你只能从行动中看到:与 public inheritance(公有担当)对比,假如 classes(类)之间的 inheritance relationship(担当关系)是 private(私有)的,编译器普通不会将一个 derived class object(派生类对象)(诸如 Student)转型为一个 base class object(基类对象)(诸如 Person).这就是为什么为 object(对象)s 调用 eat 会失利.第二个法则是从一个 private base class(私有基类)担当的 members(成员)会成为 derived class(派生类)的 private members(私有成员),即便它们在 base class(基类)中是 protected(保护)的或 public(公有)的.


  以上是“<b>C++箴言:谨严利用私有担当</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .