首页 > 编程语言 >【C++基础知识——如何判断是注入依赖还是赋值?】

【C++基础知识——如何判断是注入依赖还是赋值?】

时间:2024-09-27 22:20:33浏览次数:14  
标签:初始化 成员 queuedEventHandler C++ 基础知识 equipment 赋值 构造函数

问题

template <
    typename Type,
    typename Eventlist,
    typename Eventlist,
    typename RejectEventList,
    typename QueuedEventHandler>
class ParallelProcedureQueueManager
{
    explicit ParallelProcedureQueueManager(Type& equipment, const std::uint8_t maxQueueSize = 10)
        : queuedEventHandler(equipment), queueEventVisitor(equipment), equipment(equipment), maxQueueSize(maxQueueSize)
    {
    }

    QueuedEventHandler queuedEventHandler;
    QueueEventVisitor queueEventVisitor;
    const Type& equipment;
    const std::uint8_t maxQueueSize;
}

为什么ParallelProcedureQueueManager的构造函数中,都是用 equipment 作为参数传给成员变量?

分析

  • 成员变量初始化:构造函数使用成员初始化列表来初始化类的成员变量。这种方式比在构造函数体内赋值更高效,因为它直接调用成员变量的构造函数,而不是先调用默认构造函数再赋值。

  • 依赖注入:将 equipment 传递给 queuedEventHandlerqueueEventVisitor 的构造函数,表明这些成员变量依赖于 equipment,并且需要在创建时进行初始化。

答案

其实前两个queuedEventHandler(equipment), queueEventVisitor(equipment)是依赖注入,equipment(equipment)才是赋值。

问题2:怎么判断是依赖注入,还是直接赋值?

要判断 queuedEventHandler(equipment) 是依赖注入还是直接赋值,我们需要了解以下几点:

  • 成员变量的类型:queuedEventHandler 的类型是什么?
  • 构造函数的实现:queuedEventHandler 的构造函数是否接受 equipment 作为参数?
  • 成员初始化列表:构造函数是否在成员初始化列表中初始化 queuedEventHandler?

总结

至于怎么判断是依赖注入还是直接赋值,就看二者是不是同一个类型,如果是就是赋值,如果不是大概率就是注入依赖了。

标签:初始化,成员,queuedEventHandler,C++,基础知识,equipment,赋值,构造函数
From: https://blog.csdn.net/XWWW668899/article/details/142603607

相关文章

  • 题解 HZOJ 284 超市卖货 C/C++
    题目传送门:超市卖货-题目-OnlineJudge(haizeix.com)https://oj.haizeix.com/problem/284思路:每次寻找价格最高的商品,并尝试卖掉它:寻找未卖出商品的日期,优先锁定其保质期最后一天,若该日期已卖出则继续向前寻找能找到未卖出商品的日期时,收入增加,标记该日期代码实现:为......
  • C++字符串与字符数组
    在C++中,字符串和字符数组是紧密相关的概念,但它们之间也存在一些关键的区别。理解这些区别对于编写高效、安全的C++代码非常重要。字符数组字符数组是C++中用于存储字符序列的基础数据结构。它本质上是一个元素类型为char的数组,可以在声明时初始化,也可以在运行时通过赋值或函......
  • 算法速通-90题(1—完数难题)[含pyhton,java,c++]
    题目:完数难题 题目描述如下:    小明正在进行期末数学考试,现在他遇到了这样一个题:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数   比如6,28都是完数:6=1+2+3 ; 28=1+2+4+7+14。请判断两个正整数之间完数的个数。小明想请聪明的你帮......
  • 广州C++信奥老师解一本通题 1919:【02NOIP普及组】选数
    ​ 【题目描述】已知nn个整数x1,x2,……xn以及一个整数K(K<n)。从n个整数中任选K个整数相加,可分别得到一系列的和。例如当n=4, k=34个整数分别为3,7,12,193,7,12,19时,可得全部的组合与它们的和为:3+7+12=223+7+19=297+12+19=383+12+19=34现在,要求你计......