首頁 資料庫 mysql教程 boost::asio(2):shared

boost::asio(2):shared

Jun 07, 2016 pm 03:15 PM
boost 指針 智慧

这就得从智能指针说起,智能指针就是利用一个变量的构造和析构函数来动态管理一个指针。 说白了就是:构造--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())


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
NAT Boost與遊戲的Qos;哪個比較好? NAT Boost與遊戲的Qos;哪個比較好? Feb 19, 2024 pm 07:00 PM

在當下幾乎所有遊戲都在線上的情況下,忽視家庭網路的最佳化是不可取的。幾乎所有路由器都配備了NATBoost和QoS功能,旨在提升使用者的遊戲體驗。本文將探討NATBoost和QoS的定義、優點和缺點。 NATBoost與遊戲的Qos;哪個比較好? NATBoost,又稱網路位址轉換Boost,是一種內建於路由器的功能,可提升其效能。對於遊戲而言尤其重要,因為它有助於減少網路延遲,即遊戲設備和伺服器之間資料傳輸的時間。透過優化路由器內的資料處理方式,NATBoost實現了更快的資料處理速度和更低的延遲,從而改

五官亂飛,張嘴、瞪眼、挑眉,AI都能模仿到位,影片詐騙要防不住了 五官亂飛,張嘴、瞪眼、挑眉,AI都能模仿到位,影片詐騙要防不住了 Dec 14, 2023 pm 11:30 PM

好強大的AI模仿能力,真的防不住,完全防不住。現在AI的發展已經達到這種程度了嗎?你前腳讓自己的五官亂飛,後腳,一模一樣的表情就被復現出來,瞪眼、挑眉、噘嘴,不管多麼誇張的表情,都模仿的非常到位。加大難度,讓眉毛挑的再高些,眼睛睜的再大些,甚至連嘴型都是歪的,虛擬人物頭像也能完美復現表情。當你在左邊調整參數時,右邊的虛擬頭像也會相應地改變動作給嘴巴、眼睛一個特寫,模仿的不能說完全相同,只能說表情一模一樣(最右邊)。這項研究來自慕尼黑工業大學等機構,他們提出了GaussianAvatars,這種

泛型函數在Golang中如何處理指標和引用型別? 泛型函數在Golang中如何處理指標和引用型別? Apr 16, 2024 pm 04:06 PM

泛型函數在Go中處理指標型別時,會收到原始變數的引用,允許修改變數值。引用類型則在傳遞時會被複製,使函數無法修改原始變數值。實戰案例包括使用泛型函數比較字串或數字切片。

行人軌跡預測有哪些有效的方法和普遍的Base方法?頂會論文分享! 行人軌跡預測有哪些有效的方法和普遍的Base方法?頂會論文分享! Oct 17, 2023 am 11:13 AM

軌跡預測近兩年風頭正猛,但大都聚焦於車輛軌跡預測方向,自動駕駛之心今天就為大家分享頂會NeurIPS上關於行人軌跡預測的演算法—SHENet,在受限場景中人類的移動模式通常在一定程度上符合有限的規律。基於這個假設,SHENet透過學習隱含的場景規律來預測一個人的未來軌跡。文章已經授權自動駕駛之心原創!作者的個人理解由於人類運動的隨機性和主觀性,目前預測一個人的未來軌跡仍然是一個具有挑戰性的問題。然而,由於場景限制(例如平面圖、道路和障礙物)以及人與人或人與物體的互動性,在受限場景中人類的移動模式通

你知道程式設計師再過幾年會沒落? 你知道程式設計師再過幾年會沒落? Nov 08, 2023 am 11:17 AM

《ComputerWorld》雜誌曾經寫過一篇文章,說“編程到1960年就會消失”,因為IBM開發了一種新語言FORTRAN,這種新語言可以讓工程師寫出他們所需的數學公式,然後提交給電腦運行,所以程式設計就會終結。圖片又過了幾年,我們聽到了一種新說法:任何業務人員都可以使用業務術語來描述自己的問題,告訴電腦要做什麼,使用這種叫做COBOL的程式語言,公司不再需要程式設計師了。後來,據說IBM開發了一門名為RPG的新程式語言,可以讓員工填寫表格並產生報告,因此大部分企業的程式設計需求都可以透過它來完成圖

華為將在智慧穿戴領域推出玄璣感知系統 可根據心率評估用戶情緒狀態 華為將在智慧穿戴領域推出玄璣感知系統 可根據心率評估用戶情緒狀態 Aug 29, 2024 pm 03:30 PM

近日,華為宣布將於9月推出搭載玄璣感知系統的全新智慧穿戴新品,預計為華為的最新智慧手錶。該新品將整合先進的情緒健康監測功能,玄璣感知系統以其六大特性——準確性、全面性、快速性、靈活性、開放性和延展性——為用戶提供全方位的健康評估。系統採用超感知模組,優化了多通道光路架構技術,大幅提升了心率、血氧和呼吸速率等基礎指標的監測精度。此外,玄璣感知系統也拓展了以心率資料為基礎的情緒狀態研究,不僅限於生理指標,還能評估使用者的情緒狀態和壓力水平,並支持超過60項運動健康指標監測,涵蓋心血管、呼吸、神經、內分泌、

如何使用 C++ 引用和指標傳參? 如何使用 C++ 引用和指標傳參? Apr 12, 2024 pm 10:21 PM

C++中引用和指標都是傳遞函式參數的方法,但有差別。引用是變數的別名,修改引用會修改原始變量,而指標儲存變數的位址,修改指標值不會修改原始變數。在選擇使用引用還是指標時,需要考慮是否需要修改原始變數、是否需要傳遞空值和效能考量等因素。

進階Golang指針型方法,提升程式設計技巧 進階Golang指針型方法,提升程式設計技巧 Apr 07, 2024 pm 06:42 PM

在Go語言中可以使用指標類型方法,該方法可讓您定義指標類型的函數,以便修改指向的值,而無需在方法簽章中明確傳遞指標。這提供了程式碼簡潔性和效率,因為不需要複製值傳遞。指標型別方法的語法是:typeTypeName*Type\nfunc(t*TypeName)MethodName()。要使用指針類型方法,需要建立一個指向類型實例的指針,然後使用該指針呼叫方法。指標類型方法的好處包括:程式碼簡潔性、效率和可修改性。需要注意的是,指標類型方法只能用於指標類型,且使用時需要小心,因為指向的結構體值可能會被意外

See all articles