std::make_unique()的成员函数有哪些
时间: 2024-01-20 16:03:50 浏览: 32
`std::make_unique()` 不是一个类的成员函数,而是一个模板函数,定义在 `<memory>` 标准头文件中。它用于创建一个唯一指针,其返回类型是 `std::unique_ptr<T>`(其中 T 是指针指向的类型)。
因此,`std::make_unique()` 没有自己的成员函数。但是,它可以用于创建对象并调用对象的成员函数,例如:
```cpp
#include <memory>
#include <iostream>
class MyClass {
public:
void myFunction() {
std::cout << "Hello World!" << std::endl;
}
};
int main() {
auto myUniquePtr = std::make_unique<MyClass>();
myUniquePtr->myFunction(); // 调用 MyClass 的成员函数
return 0;
}
```
在上面的示例中,我们使用 `std::make_unique()` 创建了一个 `MyClass` 的唯一指针 `myUniquePtr`,并通过 `->` 运算符调用了 `MyClass` 的成员函数 `myFunction()`。
相关问题
ros2 std::make_unique
在ROS2中,std::make_unique函数用于创建一个唯一指针。它是C++14中引入的一个函数模板,用于在堆上创建一个对象,并返回一个指向该对象的唯一指针。在ROS2中,可以使用std::make_unique函数来创建ROS2节点。例如,可以使用以下代码创建一个继承自rclcpp::Node的类的实例:
```cpp
auto node = std::make_unique<MinimalPublisher>();
```
这将创建一个MinimalPublisher类的实例,并返回一个指向该实例的唯一指针。然后,可以使用该指针来访问该节点的成员函数和变量。
引用:
\[1\] 截至目前,galactic虽然对以上过程进行了一定程度的封装,但封装也极为简化,同时read的流程仍没有封装,使用还是很麻烦。节点的建立ROS2使用了完全的面向对象设计,以C++为例,大量的ROS API都封装在了rclcpp::Node这个类中,也就意味着需要使用这些API,你必须定义一个继承自Node的类,这也就强制用户必须使用类的方式构建整个系统,官方的一个简单的例子如下:class MinimalPublisher : public rclcpp::Node { public: MinimalPublisher() : Node("minimal_publisher"), count_(0) { publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10); timer_ = this->create_wall_timer( 500ms, std::bind(&MinimalPublisher::timer_callback, this)); } private: rclcpp::TimerBase::SharedPtr timer_; rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_; size_t count_; }
\[2\] 只要在同一ID的机器就可以接受到彼此的消息。yaml配置文件比较坑的一个细节,ROS2在yaml使用上有两个变化,如下:test_node: ros__parameters: common: topic: "your_topic"
\[3\] 主要是下面三个部分:名称重定向日志配置参数使用命令行传参在eloquent之后需要加 --ros-args标志,dashing版本不需要eloquent:ros2 run my_package node_executable --ros-args ...
#### 引用[.reference_title]
- *1* *2* [ROS2实践总结](https://blog.csdn.net/liu3612162/article/details/121906612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [[ros2学习]-学习ROS 2工具集](https://blog.csdn.net/weixin_36628778/article/details/106375420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
std::shared_ptr unique
std::shared_ptr和std::unique_ptr是C++中的智能指针,用于管理动态分配的内存资源,避免手动释放内存的繁琐和容易出错的问题。
std::shared_ptr是一种共享所有权的智能指针,它允许多个指针共同拥有同一个对象。它使用引用计数的方式来跟踪对象的生命周期,当最后一个指向对象的shared_ptr被销毁时,对象会被自动删除。可以通过std::make_shared函数来创建std::shared_ptr对象。
std::unique_ptr是一种独占所有权的智能指针,它确保只有一个指针可以拥有对象。它使用移动语义来实现所有权的转移,当unique_ptr被销毁时,它所拥有的对象也会被自动删除。可以使用new关键字或std::make_unique函数来创建std::unique_ptr对象。
这两种智能指针都提供了方便的操作符重载和成员函数,可以像原始指针一样使用,同时还提供了额外的功能,如自动释放内存、自定义删除器等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)