sencillos programacion polimorfismo parametrico herencia encapsulamiento ejemplos c++ boost boost-smart-ptr

c++ - programacion - polimorfismo parametrico c#



¿Se puede potenciar:: smart_ptr en el polimorfismo? (2)

Creo que la respuesta es si; Los apuntadores de refuerzo están codificados de tal manera que las clases derivadas se aceptan donde quiera que esté una superclase.

¿Se puede utilizar :: smart_ptr como scoped_ptr y shared_ptr en el polimorfismo?

class SomeClass { public: SomeClass() { a_ptr.reset(new SubClass); } private: boost::scoped_ptr<SuperClass> a_ptr; }


Sí:

#include <string> #include <iostream> using namespace std; #include <boost/shared_ptr.hpp> using namespace boost; class Foo { public: virtual string speak() const { return "Foo"; } virtual ~Foo() {}; }; class Bar : public Foo { public: string speak() const { return "Bar"; } }; int main() { boost::shared_ptr<Foo> my_foo(new Bar); cout << my_foo->speak(); }

La salida es: Bar