多封装,少开放。强烈建议C++标准添加class之间的注入机制「建议收藏」

多封装,少开放。强烈建议C++标准添加class之间的注入机制

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

近日在改动了一下下引擎代码(为了自己的组件),发现有些接口是仅仅有特定类及其内部函数才去訪问,却不使用友元声明的形式进行数据訪问——当然使用了普通非virtual的形式也就是意味着不建议重载。

故此:

1、建议派生类(或同意)重载的声明为虚函数即virtual类型,

2、强制派生类实现的声明为纯虚函数

3、不希望派生类重载或覆盖的函数则为普通类,假设訪问群体有限定范围或者范围比較少。能够考虑添加友元+protected的方式进行訪问控制,从而实现有效设计信息传达。可是有的时候我们不能保证可能须要訪问的友元,或者说另外的类不是我们设计的。就会出现开篇提到的现象。鉴于这样的情况,我认为C++应该添加一个注入机制,在编译期间同意其它类去訪问另外的类的protected函数,而不是只通过继承。或许说友元已经足够了,可是友元的局限太明显了。

 

机制实现细节例如以下:

regAble class A

{

protected:

void visit;

//something else

};

class B:reg A

{

A * p;

void visit()

{

p->visit();

}

}

4、假设某个操作同意重写,最好使用virtual的形式,即便丧失了小部分性能,可是还是能够原先多样化的操作。这样子和3产生强烈的对照,降低代码设计相干,降低思维耦合

以下这段是一段很优秀的代码:

/**
     * Sets the arrival order when this node has a same ZOrder with other children.
     *
     * A node which called addChild subsequently will take a larger arrival order,
     * If two children have the same Z order, the child with larger arrival order will be drawn later.
     *
     * @warning This method is used internally for localZOrder sorting, don't change this manually
     *
     * @param orderOfArrival   The arrival order.
     */
    void setOrderOfArrival(int orderOfArrival);

当我看到这种凝视。我马上明确自己是否须要处理改接口。

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

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

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


相关推荐

  • MTK65XX平台充电调试总结

    MTK65XX平台充电调试总结

    2022年2月6日
    44
  • php跨域访问的session_php跳转到另一个php

    php跨域访问的session_php跳转到另一个phpphp跨域问题解决判断参考文章:php跨域:https://blog.csdn.net/ouxiaoxian/article/details/89332027预检请求是什么:https://www.jianshu.com/p/89a377c52b48什么时候会发送options请求:https://juejin.im/post/5cb3eedcf265da038f7734c41.什么是跨…

    2026年4月17日
    5
  • 如何在VSCode配置PHP开发环境(详细版)

    如何在VSCode配置PHP开发环境(详细版)这篇博文是当初笔者上课需要配置 XAMPP 整理出来配置方法 错漏之处没有认真核对 给造成麻烦的同学道个歉 以下有两场修正之处 第一处 XAMPP 国内下载地址改成了 XAMPP 中文网最新版本下载链接 给之前误下 p2p 的同学再次道个歉 第二处 下载 xdebug 插件 添加配置处配置信息已经修正 感谢评论区 SabreWulf202 同学另 水平有限暂时无法回复大家的私信问题 请谅解 一 下载 XAMPPXAMPP 是一个易于安装的 Apache 发行版 其中包含 MariaDB PHP 和 Perl 仅仅需要下载并

    2026年3月19日
    2
  • python中变量名_Python中的变量命名规则

    python中变量名_Python中的变量命名规则Python 变量命名规则 1 要具有描述性 2 变量名只能是 数字 字母组成 不可以是空格或特殊字符 如 amp 等 3 不能是中文 4 不能以数字开头 5 保留字符是不能被使用 如下 and as assert break class continue def del elif else except exec

    2025年10月28日
    12
  • 锐龙cpu天梯图_cpu性能天梯排行图最新

    锐龙cpu天梯图_cpu性能天梯排行图最新近段时间,桌面CPU平台有了比较大的变化,AMD今年的Ryzen全面迎来逆袭,此外还拿出了最高16核的RyzenThreadripper顶级处理器。而为应对AMDRyzen的崛起,Intel近日也正式推出了八代CannonLake(10/14nm),不再挤牙膏,全线都带来了多核升级,性能激增,因而备受关注。而“电脑百事”此次CPU天梯图2017年9月版主要是在8月版的基础上,率先加入Inte…

    2025年12月10日
    12
  • Javaweb实现旅游管理系统(商城项目)(一)

    Javaweb实现旅游管理系统(商城项目)(一)一.选题的意义及选题内容概述随着信息资源的逐步网络化,信息消费者将被笼罩在巨大的信息网络之中,并由此而具备充分的获取信息的能力。此时,消费者对信息的需求将更具针对性,更为个性化。因此,网络信息服务具有传统信息服务所不具备的双向性,消费者能够更多地参与信息服务的过程,从而加速个性化服务时代的到来。锻炼自己的操作能力,将大学理论课程的学习转化为动手能力提高的基础。通过本系统,用户可以方便查询旅

    2022年6月6日
    108

发表回复

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

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