zoukankan      html  css  js  c++  java
  • 智能指针的向下转型

    // BoostTest.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    #include <iostream>
    #include "boost/cast.hpp"
    #include "boost/shared_ptr.hpp"
    using namespace boost;
    using namespace std;
    
    class base1
    {
    public:
    	virtual void print()
    	{
    		cout<<"base1::print"<<endl;
    	}
    };
    
    class base2
    {
    public:
    	void only_base2()
    	{
    		cout<<"only_base2()"<<endl;
    	}
    };
    
    class derived : public base1, public base2
    {
    public:
    	void print()
    	{
    		cout<<"derived::print"<<endl;
    	}
    	void only_here()
    	{
    		cout<<"derived::only_here()"<<endl;
    	}
    	void only_base2()
    	{
    		cout<<"oops, here too!"<<endl;
    	}
    };
    
    
    
    
    int main() 
    {
    	shared_ptr<base1> p(new derived);
    
    	p->print();
    
    	try
    	{
    
    		shared_ptr<derived> pD(shared_polymorphic_cast<derived>(p));
    
    		pD->only_here();
    		pD->only_base2();
    
    		shared_ptr<base2> pB(shared_polymorphic_cast<base2>(p));
    		pB->only_base2();
    
    	}
    	catch(bad_cast &e)
    	{
    		cout<<e.what()<<endl;
    	}
    
    
    }
    
    
  • 相关阅读:
    0722
    SGU
    预测一下吧
    0625
    0624
    0610
    0607
    0604
    poj2455Secret Milking Machine【二分 + 最大流】
    BZOJ3489: A simple rmq problem
  • 原文地址:https://www.cnblogs.com/lilun/p/1811156.html
Copyright © 2011-2022 走看看