search
HomeDatabaseMysql Tutorialboost::asio(2):shared

这就得从智能指针说起,智能指针就是利用一个变量的构造和析构函数来动态管理一个指针。 说白了就是:构造--new;析构--delete 我们可以很容易写一个智能指针: template class Tclass TAutoPtr{public: TAutoPtr() { m_t = new T(); cout TAutoPtr::TAutoPt

这就得从智能指针说起,智能指针就是利用一个变量的构造和析构函数来动态管理一个指针。

说白了就是:构造-->new;析构-->delete


我们可以很容易写一个智能指针:

template <class t>
class TAutoPtr
{

public:
    TAutoPtr() {
        m_t = new T();
        cout 使用:


<pre class="brush:php;toolbar:false">int main(int argc, char** argv)
{
    TAutoPtr<int> tt;
    
    return 0;
}</int>

这没有问题,很OK。


boost::asio就提供了该方法,可以迅速让shared_ptr来管理你的类。

但是这样就导致了一个问题,当你的类派生之enable_shared_from_this的时候,无法在类成员函数里面使用shared_from_this()获取类指针。

如下的用法是错误:

class B { 
public: 
    B(): x_(4) { 
        cout  p(this); 
        cout x_  x(new B); 
    x->f(); 
    return 0; 
} 

输出为:

B::B() 

B::~B() 
B::~B() 

两次析构同一个对象,发生灾难性后果。


同样,如下的用法也是错误的:

class A : public enable_shared_from_this<a> { 
public: 
    A() { 
        cout x_  p = shared_from_this();
        //cout x_ f();
    
    return 0;
}
</a>
虽然我们已经将类A派生之enable_shared_from_this,但是我们使用的时候并没有用shared_ptr包装类A。也错误。


总结如下:

1. 将该类派生之enable_shared_from_this。例如:class A : public enable_shared_from_this

2. 使用的时候必须加上shared_ptr abc(new A())


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Windows 11 上的智能应用控制:如何打开或关闭它Windows 11 上的智能应用控制:如何打开或关闭它Jun 06, 2023 pm 11:10 PM

智能应用控制是Windows11中非常有用的工具,可帮助保护你的电脑免受可能损害数据的未经授权的应用(如勒索软件或间谍软件)的侵害。本文将解释什么是智能应用控制、它是如何工作的,以及如何在Windows11中打开或关闭它。什么是Windows11中的智能应用控制?智能应用控制(SAC)是Windows1122H2更新中引入的一项新安全功能。它与MicrosoftDefender或第三方防病毒软件一起运行,以阻止可能不必要的应用,这些应用可能会减慢设备速度、显示意外广告或执行其他意外操作。智能应用

NAT Boost与游戏的Qos;哪个更好?NAT Boost与游戏的Qos;哪个更好?Feb 19, 2024 pm 07:00 PM

在当下几乎所有游戏都在线的情况下,忽视家庭网络的优化是不可取的。几乎所有路由器都配备了NATBoost和QoS功能,旨在提升用户的游戏体验。本文将探讨NATBoost和QoS的定义、优势和劣势。NATBoost与游戏的Qos;哪个更好?NATBoost,又称网络地址转换Boost,是一种内置于路由器的功能,可提升其性能。对于游戏而言尤为重要,因为它有助于减少网络延迟,即游戏设备和服务器之间数据传输的时间。通过优化路由器内的数据处理方式,NATBoost实现了更快的数据处理速度和更低的延迟,从而改

一文聊聊SLAM技术在自动驾驶的应用一文聊聊SLAM技术在自动驾驶的应用Apr 09, 2023 pm 01:11 PM

定位在自动驾驶中占据着不可替代的地位,而且未来有着可期的发展。目前自动驾驶中的定位都是依赖RTK配合高精地图,这给自动驾驶的落地增加了不少成本与难度。试想一下人类开车,并非需要知道自己的全局高精定位及周围的详细环境,有一条全局导航路径并配合车辆在该路径上的位置,也就足够了,而这里牵涉到的,便是SLAM领域的关键技术。什么是SLAMSLAM (Simultaneous Localization and Mapping),也称为CML (Concurrent Mapping and Localiza

一文读懂智能汽车滑板底盘一文读懂智能汽车滑板底盘May 24, 2023 pm 12:01 PM

01什么是滑板底盘所谓滑板式底盘,即将电池、电动传动系统、悬架、刹车等部件提前整合在底盘上,实现车身和底盘的分离,设计解耦。基于这类平台,车企可以大幅降低前期研发和测试成本,同时快速响应市场需求打造不同的车型。尤其是无人驾驶时代,车内的布局不再是以驾驶为中心,而是会注重空间属性,有了滑板式底盘,可以为上部车舱的开发提供更多的可能。如上图,当然我们看滑板底盘,不要上来就被「噢,就是非承载车身啊」的第一印象框住。当年没有电动车,所以没有几百公斤的电池包,没有能取消转向柱的线传转向系统,没有线传制动系

智能网联汽车线控底盘技术深度解析智能网联汽车线控底盘技术深度解析May 02, 2023 am 11:28 AM

01线控技术认知线控技术(XbyWire),是将驾驶员的操作动作经过传感器转变成电信号来实现传递控制,替代传统机械系统或者液压系统,并由电信号直接控制执行机构以实现控制目的,基本原理如图1所示。该技术源于美国国家航空航天局(NationalAeronauticsandSpaceAdministration,NASA)1972年推出的线控飞行技术(FlybyWire)的飞机。其中,“X”就像数学方程中的未知数,代表汽车中传统上由机械或液压控制的各个部件及相关的操作。图1线控技术的基本原理

智能汽车规划控制常用控制方法详解智能汽车规划控制常用控制方法详解Apr 11, 2023 pm 11:16 PM

控制是驱使车辆前行的策略。控制的目标是使用可行的控制量,最大限度地降低与目标轨迹的偏差、最大限度地提供乘客的舒适度等。如上图所示,与控制模块输入相关联的模块有规划模块、定位模块和车辆信息等。其中定位模块提供车辆的位置信息,规划模块提供目标轨迹信息,车辆信息则包括档位、速度、加速度等。控制输出量则为转向、加速和制动量。控制模块主要分为横向控制和纵向控制,根据耦合形式的不同可以分为独立和一体化两种方法。1 控制方法1.1 解耦控制所谓解耦控制,就是将横向和纵向控制方法独立分开进行控制。1.2 耦合控

一文读懂智能汽车驾驶员监控系统一文读懂智能汽车驾驶员监控系统Apr 11, 2023 pm 08:07 PM

驾驶员监控系统,缩写DMS,是英文Driver Monitor System的缩写,即驾驶员监控系统。主要是实现对驾驶员的身份识别、驾驶员疲劳驾驶以及危险行为的检测功能。福特DMS系统01 法规加持,DMS进入发展快车道在现阶段开始量产的L2-L3级自动驾驶中,其实都只有在特定条件下才可以实行,很多状况下需要驾驶员能及时接管车辆进行处置。因此,在驾驶员太信任自动驾驶而放弃或减弱对驾驶过程的掌控时可能会导致某些事故的发生。而DMS-驾驶员监控系统的引入可以有效减轻这一问题的出现。麦格纳DMS系统,

李飞飞两位高徒联合指导:能看懂「多模态提示」的机器人,zero-shot性能提升2.9倍李飞飞两位高徒联合指导:能看懂「多模态提示」的机器人,zero-shot性能提升2.9倍Apr 12, 2023 pm 08:37 PM

人工智能领域的下一个发展机会,有可能是给AI模型装上一个「身体」,与真实世界进行互动来学习。相比现有的自然语言处理、计算机视觉等在特定环境下执行的任务来说,开放领域的机器人技术显然更难。比如prompt-based学习可以让单个语言模型执行任意的自然语言处理任务,比如写代码、做文摘、问答,只需要修改prompt即可。但机器人技术中的任务规范种类更多,比如模仿单样本演示、遵照语言指示或者实现某一视觉目标,这些通常都被视为不同的任务,由专门训练后的模型来处理。最近来自英伟达、斯坦福大学、玛卡莱斯特学

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!