Heim Datenbank MySQL-Tutorial 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>
Nach dem Login kopieren

这没有问题,很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; 
} 
Nach dem Login kopieren

输出为:

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>
Nach dem Login kopieren
虽然我们已经将类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())


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

NAT Boost vs. Qos für Spiele; was ist besser? NAT Boost vs. Qos für Spiele; was ist besser? Feb 19, 2024 pm 07:00 PM

In der heutigen Situation, in der fast alle Spiele online stattfinden, ist es nicht ratsam, die Optimierung des Heimnetzwerks außer Acht zu lassen. Fast alle Router sind mit NATBoost- und QoS-Funktionen ausgestattet, die das Spielerlebnis der Benutzer verbessern sollen. In diesem Artikel werden die Definition, Vor- und Nachteile von NATBoost und QoS untersucht. NATBoost vs. Qos für Spiele; welches ist besser? NATBoost, auch bekannt als Network Address Translation Boost, ist eine in Router integrierte Funktion, die deren Leistung verbessert. Dies ist besonders wichtig für Spiele, da es dazu beiträgt, die Netzwerklatenz zu reduzieren, also die Zeit, die für die Datenübertragung zwischen dem Spielgerät und dem Server benötigt wird. Durch die Optimierung der Datenverarbeitungsmethode innerhalb des Routers erreicht NATBoost eine schnellere Datenverarbeitungsgeschwindigkeit und eine geringere Latenz und verändert so die

Die herumfliegenden Gesichtszüge, das Öffnen des Mundes, das Starren und das Hochziehen der Augenbrauen können von der KI perfekt nachgeahmt werden, sodass Videobetrug nicht verhindert werden kann Die herumfliegenden Gesichtszüge, das Öffnen des Mundes, das Starren und das Hochziehen der Augenbrauen können von der KI perfekt nachgeahmt werden, sodass Videobetrug nicht verhindert werden kann Dec 14, 2023 pm 11:30 PM

Mit solch einer mächtigen KI-Imitationsfähigkeit ist es wirklich unmöglich, dies zu verhindern. Hat die Entwicklung der KI mittlerweile dieses Niveau erreicht? Ihr vorderer Fuß lässt Ihre Gesichtszüge fliegen, und auf Ihrem hinteren Fuß wird genau der gleiche Ausdruck reproduziert. Starren, Augenbrauen hochziehen, schmollen, egal wie übertrieben der Ausdruck ist, alles wird perfekt nachgeahmt. Erhöhen Sie den Schwierigkeitsgrad, heben Sie die Augenbrauen höher, öffnen Sie die Augen weiter, und sogar die Mundform ist schief und der Ausdruck des Avatars kann perfekt reproduziert werden. Wenn Sie die Parameter auf der linken Seite anpassen, ändert der virtuelle Avatar auf der rechten Seite auch seine Bewegungen entsprechend, um eine Nahaufnahme von Mund und Augen zu erhalten. Man kann nicht sagen, dass die Nachahmung genau gleich ist, aber der Ausdruck ist genau derselbe gleich (ganz rechts). Die Forschung stammt von Institutionen wie der Technischen Universität München, die GaussianAvatars vorschlägt

Wie gehen generische Funktionen mit Zeigern und Referenztypen in Golang um? Wie gehen generische Funktionen mit Zeigern und Referenztypen in Golang um? Apr 16, 2024 pm 04:06 PM

Wenn eine generische Funktion Zeigertypen in Go verarbeitet, erhält sie einen Verweis auf die ursprüngliche Variable, sodass der Variablenwert geändert werden kann. Referenztypen werden bei der Übergabe kopiert, sodass die Funktion den ursprünglichen Variablenwert nicht ändern kann. Zu den praktischen Beispielen gehört die Verwendung generischer Funktionen zum Vergleichen von Zeichenfolgen oder Zahlensegmenten.

Wussten Sie, dass es bei Programmierern in ein paar Jahren einen Niedergang geben wird? Wussten Sie, dass es bei Programmierern in ein paar Jahren einen Niedergang geben wird? Nov 08, 2023 am 11:17 AM

Die Zeitschrift „ComputerWorld“ schrieb einmal in einem Artikel, dass „die Programmierung bis 1960 verschwinden wird“, weil IBM eine neue Sprache FORTRAN entwickelt hat, die es Ingenieuren ermöglicht, die benötigten mathematischen Formeln zu schreiben und sie dann dem Computer zu übermitteln, damit das Programmieren endet. Ein paar Jahre später hörten wir ein neues Sprichwort: Jeder Unternehmer kann Geschäftsbegriffe verwenden, um seine Probleme zu beschreiben und dem Computer zu sagen, was er tun soll. Mit dieser Programmiersprache namens COBOL brauchen Unternehmen keine Programmierer mehr. Später soll IBM eine neue Programmiersprache namens RPG entwickelt haben, mit der Mitarbeiter Formulare ausfüllen und Berichte erstellen können, sodass die meisten Programmieranforderungen des Unternehmens damit erfüllt werden können.

Huawei wird das Xuanji-Sensorsystem im Bereich Smart Wearables auf den Markt bringen, das den emotionalen Zustand des Benutzers anhand der Herzfrequenz beurteilen kann Huawei wird das Xuanji-Sensorsystem im Bereich Smart Wearables auf den Markt bringen, das den emotionalen Zustand des Benutzers anhand der Herzfrequenz beurteilen kann Aug 29, 2024 pm 03:30 PM

Kürzlich gab Huawei bekannt, dass es im September ein neues intelligentes tragbares Produkt mit dem Xuanji-Sensorsystem auf den Markt bringen wird, bei dem es sich voraussichtlich um die neueste Smartwatch von Huawei handeln wird. Dieses neue Produkt wird fortschrittliche Funktionen zur Überwachung der emotionalen Gesundheit integrieren. Das Xuanji Perception System bietet Benutzern eine umfassende Gesundheitsbewertung mit seinen sechs Merkmalen – Genauigkeit, Vollständigkeit, Geschwindigkeit, Flexibilität, Offenheit und Skalierbarkeit. Das System nutzt ein Super-Sensing-Modul und optimiert die Mehrkanal-Optikpfad-Architekturtechnologie, wodurch die Überwachungsgenauigkeit grundlegender Indikatoren wie Herzfrequenz, Blutsauerstoff und Atemfrequenz erheblich verbessert wird. Darüber hinaus hat das Xuanji Sensing System auch die Erforschung emotionaler Zustände auf Basis von Herzfrequenzdaten erweitert. Es beschränkt sich nicht nur auf physiologische Indikatoren, sondern kann auch den emotionalen Zustand und das Stressniveau des Benutzers bewerten. Es unterstützt die Überwachung von mehr als 60 Sportarten Gesundheitsindikatoren, die kardiovaskuläre, respiratorische, neurologische, endokrine,

Erweiterte Methoden vom Typ Golang-Zeiger zur Verbesserung der Programmierkenntnisse Erweiterte Methoden vom Typ Golang-Zeiger zur Verbesserung der Programmierkenntnisse Apr 07, 2024 pm 06:42 PM

Der Zeigertyp-Ansatz ist in der Go-Sprache verfügbar und ermöglicht es Ihnen, eine Funktion vom Zeigertyp zu definieren, um den Wert zu ändern, auf den gezeigt wird, ohne den Zeiger explizit in der Methodensignatur zu übergeben. Dies sorgt für Einfachheit und Effizienz des Codes, da Copy-by-Value-Durchgänge nicht kopiert werden müssen. Die Syntax der Zeigertypmethode lautet: typeTypeName*Type\nfunc(t*TypeName)MethodName(). Um Zeigertypmethoden zu verwenden, erstellen Sie einen Zeiger auf eine Instanz des Typs und verwenden diesen Zeiger dann zum Aufrufen der Methode. Zu den Vorteilen von Methoden vom Zeigertyp gehören die Einfachheit, Effizienz und Modifizierbarkeit des Codes. Es ist zu beachten, dass die Zeigertypmethode nur für Zeigertypen verwendet werden kann und Sie bei der Verwendung vorsichtig sein müssen, da der Strukturwert, auf den verwiesen wird, möglicherweise versehentlich angezeigt wird

Was sind die effektiven Methoden und gängigen Basismethoden für die Vorhersage der Fußgängerbahn? Teilen der besten Konferenzbeiträge! Was sind die effektiven Methoden und gängigen Basismethoden für die Vorhersage der Fußgängerbahn? Teilen der besten Konferenzbeiträge! Oct 17, 2023 am 11:13 AM

Die Flugbahnvorhersage stand in den letzten zwei Jahren im Rampenlicht, aber das meiste davon konzentriert sich auf die Richtung der Fahrzeugflugbahnvorhersage. Heute wird Autonomous Driving Heart den Algorithmus für die Flugbahnvorhersage von Fußgängern auf NeurIPS – SHENet teilen. Menschliche Bewegungsmuster unterliegen in der Regel bis zu einem gewissen Grad begrenzten Regeln. Basierend auf dieser Annahme sagt SHENet die zukünftige Flugbahn einer Person voraus, indem es implizite Szenenregeln lernt. Der Artikel wurde von Autonomous Driving Heart als Original zertifiziert! Nach persönlichem Verständnis des Autors ist die Vorhersage der zukünftigen Flugbahn einer Person aufgrund der Zufälligkeit und Subjektivität menschlicher Bewegungen derzeit immer noch ein herausforderndes Problem. Allerdings variieren menschliche Bewegungsmuster in eingeschränkten Szenen häufig aufgrund von Szenenbeschränkungen (z. B. Grundrissen, Straßen und Hindernissen) und der Interaktivität von Mensch zu Mensch oder Mensch zu Objekt.

Wie verwende ich C++-Referenz- und Zeigerparameterübergabe? Wie verwende ich C++-Referenz- und Zeigerparameterübergabe? Apr 12, 2024 pm 10:21 PM

Referenzen und Zeiger sind in C++ beide Methoden zur Übergabe von Funktionsparametern, es gibt jedoch Unterschiede. Eine Referenz ist ein Alias ​​für eine Variable. Durch Ändern der Referenz wird die ursprüngliche Variable geändert, während der Zeiger die Adresse der Variablen speichert. Wenn Sie sich für die Verwendung einer Referenz oder eines Zeigers entscheiden, müssen Sie Faktoren berücksichtigen, z. B. ob die ursprüngliche Variable geändert werden muss, ob ein Nullwert übergeben werden muss, und Leistungsaspekte.

See all articles