指针除了管理内存之外,在C++中还有一个重要的功能就是实现多态。
代码很简单,还是使用虚函数。与原生指针并没有什么区别:
#include <iostream>
#include <memory>
using namespace std;
class parent
{
public:
parent()
{
cout << "parent constructor" << endl;
}
virtual void showinfo()
{
cout << "parent info" << endl;
}
~parent()
{
cout << "parent destructor" << endl;
}
};
class child : public parent
{
public:
child()
{
cout << "child constructor" << endl;
}
virtual void showinfo()
{
cout << "child info" << endl;
}
~child()
{
cout << "child destructor" << endl;
}
};
int main()
{
shared_ptr<parent> sp = make_shared<child>();
sp->showinfo();
return 0;
}
运行程序,输出为:
parent constructor
child constructor
child info
child destructor
parent destructor