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