flightModelMap.insert(std::make_pair(flightID, std::make_shared<flightModel>(flightID))) 获取类创建的实例
时间: 2025-01-28 10:28:19 浏览: 38
在这个代码片段中,`flightModelMap.insert(std::make_pair(flightID, std::make_shared<flightModel>(flightID)))`是用于向`flightModelMap`中添加一个新的元素的过程。这里涉及到以下几个关键点:
1. **flightID**:这是一个变量,通常表示航班ID,它是用来区分不同`flightModel`的唯一标识。
2. **std::make_pair(flightID, ...)**:这是C++11引入的范围-based for循环之前,创建关联数组的一个便捷方式。`make_pair`函数接收两个参数并返回一个`std::pair`,在这里,第一个参数是`flightID`,第二个参数是一个临时对象。
3. **std::make_shared<flightModel>(flightID)**:这是创建`flightModel`类共享所有权的对象。`make_shared`是一个工厂函数,用于快速、安全地创建`shared_ptr`。传入的`flightID`会被传递给`flightModel`类的构造函数,用于初始化类的新实例。
当这条语句执行时,会新建一个`flightModel`对象,使用`flightID`作为参数,然后把这个对象包装在一个`shared_ptr`中。`shared_ptr`负责管理对象的生命周期,确保只有最后一个持有它的引用时才会删除对象,防止内存泄漏。
获取类创建的实例可以通过`shared_ptr`来访问,例如:
```cpp
auto insertedFlight = flightModelMap[flightID];
if (insertedFlight) { // 检查是否存在
flightModel &modelInstance = *insertedFlight; // 解引用获得实例
// 使用 modelInstance 属性和方法
}
```
阅读全文
相关推荐




















