64,648
社区成员
发帖
与我相关
我的任务
分享
auto_ptr<A> ptrA(new B());
auto_ptr<B>ptrB;
ptrB.reset((B*)ptrA.get());
ptrA=ptrB;
#include <iostream>
#include <vector>
#include <string>
#include <typeinfo>
#include <boost/shared_ptr.hpp>
using namespace std;
class A
{
public:
virtual ~A() {cout<<"~A()"<<endl;}
};
class B :public A
{
public:
~B() {cout<<"~B()"<<endl;}
};
int main()
{
auto_ptr<A> ptrA(new A());
auto_ptr<B>ptrB;
ptrB.reset((B*)ptrA.get());//这么转
ptrA=ptrB;
return 0;
}
class A
{
public:
~A() {}
virtual int get() const = 0;
};
class B :public A
{
public:
~B() {}
B(int value):m_value(value) {}
int get() const
{
return m_value;
}
private:
int m_value;
};
int main()
{
auto_ptr<A> ptr(new B(10));
printf("%d\n", ptr->get());
return 0;
}