Effective C++ 条款39

Effective C++ 条款39

大家好,又见面了,我是全栈君。

我从本条款中学到了下面内容:
1.private继承不同于另外两种继承,派生类对象不能隐式转换为基类对象。

例如以下代码:

class Bird//鸟
{

};

class ostrich:private Bird//鸵鸟
{

};

int main()
{
Bird *b =  new ostrich();//编译不通过,基类不能转换为派生类

}

编译器明白指出基类是不可訪问的。所以转换失败。

private继承在基类和派生类之间已经没有所谓的继承关系,之所以有它的存在纯粹是为应用层面服务,即为了编程的灵活性而存在的继承关系。

2.例如以下代码。告诉我们private调用的优点,当存在一种特殊情况时。即base class 大小为空时,调用private继承能够使派生类占领的空间大小最小化。这时有人会说我定义的类不是空,为什么大小为1个字节。这里简单解释下。不论什么一个类的大小都不为空,即使你这样定义
class m{};这个类的大小依旧为1,类的大小仅仅和变量有关。而且变量是非静态变量。静态变量不影响类的大小。

#include<string>
#include<iostream>
using namespace std;
class Bird//鸟
{
public:
    static string name;
    static string getName(){ return name; }
};

class ostrich:private Bird//鸵鸟
{

};

int main()
{
    int m1 = sizeof(Bird);//m1大小为1个字节
    int m2 = sizeof(ostrich);//m2大小也为1个字节

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116022.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月27日 上午9:00
下一篇 2022年1月27日 上午9:00


相关推荐

  • css 第二行换行,CSS换行详解

    css 第二行换行,CSS换行详解普通文本段落的换行案例说明 在实际应用中我们常遇到这样的问题 就是一段文本 有了明确的宽度 需要文本自动换行 如下图 案例分析 上面两个图 没有使用任何排版的 CSS 属性 也就是默认情况下 块元素里的文本 达到边缘以后会自动换行 但是这里有个特例 就是内容全部为英文字母 没有单词句子 没有词和词之间的空格 此时文本就不自动换行了 见下图 特殊情况 有时候你写的东东 默认情况下并不自动换行 这多半

    2026年3月18日
    2
  • 汉字“月”的起源、演变过程

    汉字“月”的起源、演变过程

    2026年3月14日
    2
  • 0x0000是什么颜色_企业代码类型

    0x0000是什么颜色_企业代码类型转自http://blog.csdn.net/cgwcgw_/article/details/21155229″black”=>array(0x000000),黑色”maroon”=>array(0x800000),栗色”green”=>array(0x008000),绿色”olive”=>array(0x808000),橄榄色”navy”=>array(0x

    2022年10月8日
    4
  • Scala Implicit 详解

    Scala Implicit 详解Implicit 是 Scala 中一个很重要的特性 开始学习 Scala 之前一直以为它和 Java 差不多 然而真的看一些 Scala 的源码时却发现并没有想象中那么简单 所以准备写几篇文章来详解 Scala 中异于 Java 的特性 就从 Implicit 开始吧 在我看来 Implicit 做的事情也是 Scala 主要做的事情 那就是代码压缩 减少模块代码 talkischea

    2026年3月18日
    1
  • 用户登录与AD域集成[通俗易懂]

    用户登录与AD域集成[通俗易懂]1.关于AD域的介绍AD的全称是ActiveDirectory:活动目录域(Domain):1)域是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即TrustRelation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后2)两个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理,…

    2022年5月17日
    150
  • Python Traceback (most recent call last) 错误信息:解读示例

    Python Traceback (most recent call last) 错误信息:解读示例2018 11 1211 34 更新 重新排版 欢迎关注微信公众号 陶晨毅 代码之外的资料分享学习打卡站 先说明 本博客不解决任何具体问题 只是初学时为看懂报错信息写的笔记示例 如果一个错误出现后没有被捕获 捕获是什么先不管 现在就理解为出现了一个错误 它就一直被往上抛 最终将被 Python 解释器捕获 然后就在本该输出结果的地方打印一大串错误信息 然后程序退出 示例代码

    2026年3月19日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号