lundi 22 mai 2017

Why do const shared_ptr

For the following code snippet, it shows different reference counts in the methods. Could someone explain why these values are different?

class Foo {
};

void f1( const std::shared_ptr<Foo>& ptr ) {
   std::cout << "f1(): counts: " << ptr.use_count() << std::endl;
}

void f2( const std::shared_ptr<const Foo>& ptr ) {
   std::cout << "f2(): counts: " << ptr.use_count() << std::endl;
}

int main() {
   std::shared_ptr<Foo> ptr( new Foo );
   std::cout << "main(): counts: " << ptr.use_count() << std::endl;

   f1( ptr );
   f2( ptr );

   std::cout << "main(): counts: " << ptr.use_count() << std::endl;

   return 0;
}

The corresponding output:

main(): counts: 1
f1(): counts: 1
f2(): counts: 2
main(): counts: 1

Aucun commentaire:

Enregistrer un commentaire