Skip to main content

Boost - shared pointer

Shared pointer is another kind of Boost library's pointer. It is similar to scoped pointer but shared pointer allows share ownership of object. We are able to assign two or more pointers pointing to the same object (it was impossible for scoped pointer).

Take a look to the example below: Output of this example is:
In point I we are initializing two shared pointers pointing to two separate instances of TestClass class, then we are printing its values in point II.

Point III shows use difference between shared pointer and scoped pointer. We are assigning two pointers to the same object of class TestClass. In this point object having testValue==5 is being destroyed (because we remove the only one pointer to that object). Also, we have two pointers pointing to objects having testValue==6 now. Note that that object will be destroyed when last shared pointer pointing to them will be destroyed (int our case it is destroyed when we are reaching end of main() function). This is key difference between scoped pointer and shared pointer.

In point IV we are printing testValues of objects which are being pointed by our both scoped pointers. Actually, it is the same object so we are getting value 6 in both cases.

Code of this example you can find in our GitHub account:
https://github.com/xmementoit/CppAdventureExamples/tree/master/boost/sharedPointer


Comments

  1. Are you going to present some article describing comparison (similarities and differences) of all Boost smart pointers?

    ReplyDelete
  2. I scheduled your request in my articles lists so it will be released here, soon.

    ReplyDelete

Post a Comment

Popular posts from this blog

Blog's new layout

As you noticed this blog has new layout from today. I hope you like it. I think new layout looks better and more modern than previous one. Please, write you opinion about new layout in comments. If you have some ideas how to make this blog better, all ideas are welcomed. Enjoy new layout and blog articles.

QT - foreach algoriithm with const references performance improvement

Today I would like to show you optimal way of using foreach QT algorithm . I will show you why we should pass elements of foreach algorithm by const reference instead of passing them by value. Let me explain it on the below example: Output of this example is: In point I we are creating 3 objects of MyClass class and push them to myClasses QList element. In point II we are using QT foreach algorithm to invoke getValue() method for each object from myClasses list. As you can see on output text for that part of code we are invoking copy constructor before and destructor after invoking getValue() function. It is because we are passing each myClasses list element to foreach algorithm by value. Therefore we are copying that element at the beginning of foreach loop step and removing them (destructing) at the end. This is inefficient solution, especially when class of object being copied is big. It decreases performance. of our application. Solution for that i...

C++ in 2014 - Predictions

Today I would like to share with you interesting article about prediction of development C++ programming languages (and its well-known frameworks and libraries) in 2014. It is written by Jens Weller and I think it is very interesting for every C++ programmer and user. You can open this article by clicking on the image below: Enjoy!