问题
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 传递给
queuedEventHandler
和queueEventVisitor
的构造函数,表明这些成员变量依赖于 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