C++11智能指针shared_ptr的向上转upcast向下转downcast
来源:互联网 发布:淘宝营销推广方式 编辑:程序博客网 时间:2024/05/20 16:00
#include <iostream>
#include <memory>
class A{
public:
virtual ~A() =default;//must have a virtual otherwise complie err: not polymorphic
};
class B: public A{
};
typedef std::shared_ptr<A> APtr;
typedef std::shared_ptr<B> BPtr;
void test_pt(APtr p){
if (BPtr b =std::dynamic_pointer_cast<B>(p)) {
std::cout<<"bbb " << b <<std::endl;
}
else{
std::cout<<"nnn" <<std::endl;
}
}
int main(int argc,constchar * argv[])
{
void test1();
APtr a(newA());
BPtr b(newB());
APtr c(newB());
std::cout<<std::dynamic_pointer_cast<A>(b) <<std::endl;//upcast, not 0
std::cout<<std::dynamic_pointer_cast<B>(a) <<std::endl;//downcast, 0
std::cout<<std::dynamic_pointer_cast<B>(c) <<std::endl;//downcast, not 0
test_pt(b);
std::cout<<"xxx " << b <<std::endl;//not 0
std::cout <<"Hello, World!\n";
return0;
}
0x100100a50
0x0
0x100100a80
bbb 0x100100a50
xxx 0x100100a50
Hello, World!
---------refernce------------------http://msdn.microsoft.com/en-us/library/bb982967.aspx
http://stackoverflow.com/questions/14877626/up-casting-stdshared-ptr-using-stddynamic-pointer-cast
- C++11智能指针shared_ptr的向上转upcast向下转downcast
- java中向上转型(upcast)和向下转型(downcast)
- java中向上转型(upcast)和向下转型(downcast)
- java中向上转型(upcast)和向下转型(downcast)
- Upcast and DownCast
- C++:智能指针之shared_ptr
- C++ TR1 智能指针shared_ptr的使用(转)
- Java中继承抽象类的downcast和upcast
- 智能指针 shared_ptr 的使用方法
- 智能指针shared_ptr的实现
- 智能指针shared_ptr的用法
- 智能指针shared_ptr的用法
- C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
- C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
- C++11智能指针Shared_ptr
- C++11 智能指针 shared_ptr
- 【C++】智能指针auto_ptr/unique_ptr/shared_ptr/weak_ptr!!!
- C++11智能指针之shared_ptr的使用(1)
- Balsamiq Mockups完全手册
- cocos2d 坐标系使用
- 海量数据面试题举例
- jQuery学习08---相对定位,工资点击求和
- 我要开始写博客了。
- C++11智能指针shared_ptr的向上转upcast向下转downcast
- 修改Flash Builder注释里的@author
- 编写类String的构造函数、析构函数和赋值函数
- 素数环
- Tomcat部署Web应用方法总结
- .NET Framework小结
- MS Access
- dnet iis7发布mvc4 报 403错误解决办法
- Android CTS 结果 testResult.xml 修改 fail 项 为 notExecuted 项 分析