您的位置:首页 > 健康 > 养生 > 元气森林的网络营销方式_如何推广视频号_智慧营销系统平台_郑州网站

元气森林的网络营销方式_如何推广视频号_智慧营销系统平台_郑州网站

2025/3/19 19:24:53 来源:https://blog.csdn.net/weixin_43219667/article/details/146267594  浏览:    关键词:元气森林的网络营销方式_如何推广视频号_智慧营销系统平台_郑州网站
元气森林的网络营销方式_如何推广视频号_智慧营销系统平台_郑州网站

std::shared_ptr 的 Rust 绑定称为 SharedPtr。

限制:

SharedPtr 不支持 T 为不透明的 Rust 类型。对于在语言边界上传递不透明 Rust 类型的所有权,应改用 Box(C++ 中的 rust::Box)。

示例

// src/main.rsuse std::ops::Deref;
use std::ptr;#[cxx::bridge]
mod ffi {unsafe extern "C++" {include!("example/include/example.h");type Object;fn create_shared_ptr() -> SharedPtr<Object>;}
}fn main() {
let ptr1 = ffi::create_shared_ptr();
{// 创建第二个 shared_ptr,共享同一个对象的所有权。// 仍然只有一个 Object,但有两个 SharedPtr<Object>。// 两个指针都指向堆上的同一个对象。let ptr2 = ptr1.clone();assert!(ptr::eq(ptr1.deref(), ptr2.deref()));// ptr2 超出作用域,但 Object 尚未被销毁。
}println!("向 Object 说再见");// ptr1 超出作用域,Object 被销毁。
}
// include/example.h#pragma once
#include <memory>class Object {
public:
Object();
~Object();
};std::shared_ptr<Object> create_shared_ptr();
// src/example.cc#include "example/include/example.h"
#include <iostream>Object::Object() { std::cout << "construct Object" << std::endl; }
Object::~Object() { std::cout << "~Object" << std::endl; }std::shared_ptr<Object> create_shared_ptr() {
return std::make_shared<Object>();
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com