• 类型强转的那些坑


    #include <iostream>
    #include <Windows.h>
    using namespace std;
    
    class base
    {
    public:
    	virtual void f() { cout << "Base::f" << endl; }
    	int type;
    };
    
    class Derive :public base
    {
    public:
    	 Derive(){type = 1;}
    	void f() { cout << "Derive::f" << endl; }
    	void f1() { cout << "Derive::f1" << endl; }
    	int type;
    };
    
    class Derive2 :public base
    {
    public:
    	Derive2(){type = 2;}
    	void f() { cout << "Derive2::f" << endl; }
    	void f2() { cout << "Derive2::f2" << endl; }
    	int type;
    };
    
    void main()
    {
    	base *b = new Derive();
    	/*
    	Derive2* pb = (Derive2*)b;
    	pb->f2();			//如果二个子类是很复杂的,很多时候这里就会报错 
    	*/
    	if(b->type == 2)	//正确的使用方式应该判断一下子类的原始类型
    	{
    		Derive2* pb = (Derive2*)b;
    		pb->f2();	
    	}
    	system("pause");
    }

  • 相关阅读:
    List(双向链表)
    Queue(队列)
    Queue(队列)
    Stack(栈)
    Stack(栈)
    Vector(容器)
    gitlab代码库
    Jenkins自动化部署平台
    Maven私服仓库
    VM架构设计文档初稿v0.01
  • 原文地址:https://www.cnblogs.com/byfei/p/6389679.html
Copyright © 2020-2023  润新知