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;
    	}
    
    
    }
    
    
  • 相关阅读:
    深度拾遗(06)
    非平衡数据处理
    深度拾遗(05)
    深度拾遗(00)
    深度拾遗(04)
    深度拾遗(03)
    深度拾遗(02)
    js继承方式
    js带缩略图的图片切换效果
    获取SQL Server数据库中的表和字段描述
  • 原文地址:https://www.cnblogs.com/lilun/p/1811156.html
Copyright © 2011-2022 走看看