zoukankan      html  css  js  c++  java
  • c++语法(2)

    #include<iostream>
    #include<windows.h>
    using namespace std;
    
    
    class Parents
    {
        public:
            virtual void   vir_func(char a='x',char b='y',char c='z'); //虚函数
             Parents();
            ~Parents();                                    
    };
    
    void Parents::vir_func(char a,char b,char c)
    {
        cout<<"父类的vir_func函数正在运行..."<<"参数为:"<<a<<","<<b<<","<<c<<endl;
    
    }
    Parents::Parents()
    {  
        cout<<"父类的构造函数正在运行..."<<endl;
        
    }
    
    Parents::~Parents()
    {}
    
    class Child:public Parents
    {
    public:
          ~Child();
          Child(int a,char c);
    };
    Child::Child(int i,char c)
    {
        cout<<"子类的构造函数正在运行..."<<"参数为:"<<i<<","<<c<<endl;
    
    }
    Child::~Child()
    {}
    
    
    class B
    {
    public:
        Parents *Par;
        void Init();
    };
    void B::Init()
    {
        //父类指向子类
        Par=new Child(2,'c');
        cout<<"基类类型的指针已经绑定到派生类..."<<endl;
        Par->vir_func('d','e','f');
    }
    
    int main()
    {
        
        B Test;
        Test.Init();
        system("pause");
        return 0;
    }

    #include<iostream>
    #include<windows.h>
    using namespace std;
    
    
    class Parents
    {
        public:
            virtual void   vir_func(char a='x',char b='y',char c='z'); //虚函数
             Parents();
            ~Parents();                                    
    };
    
    void Parents::vir_func(char a,char b,char c)
    {
        cout<<"父类的vir_func函数正在运行..."<<"参数为:"<<a<<","<<b<<","<<c<<endl;
    
    }
    Parents::Parents()
    {  
        cout<<"父类的构造函数正在运行..."<<endl;
        
    }
    
    Parents::~Parents()
    {}
    
    class Child:public Parents
    {
    public:
         void vir_func(char a,char b,char c);
          ~Child();
          Child(int a,char c);
    };
    void Child::vir_func(char a,char b,char c)
    {
        cout<<"子类的vir_func函数正在运行..."<<"参数为:"<<a<<","<<b<<","<<c<<endl;
    }
    Child::Child(int i,char c)
    {
        cout<<"子类的构造函数正在运行..."<<"参数为:"<<i<<","<<c<<endl;
    
    }
    Child::~Child()
    {}
    
    
    class B
    {
    public:
        Parents *Par;
        void Init();
    };
    void B::Init()
    {
        //父类指向子类
        Par=new Child(2,'c');
        cout<<"基类类型的指针已经绑定到派生类..."<<endl;
        Par->vir_func('d','e','f');
    }
    
    int main()
    {
        
        B Test;
        Test.Init();
        system("pause");
        return 0;
    }

    从上面的2段程序可以看出:

    当基类动态绑定到派生类时,如果派生类没有实现基类的虚函数,那么调用的是基类自己实现的虚函数。

    若派生类重新定义虚函数,那么执行的则是派生类实现的虚函数。

  • 相关阅读:
    ubuntu一些记录
    unittest添加测试用例方法
    弹出框处理
    无法连接终端
    Python 断言
    Appium_Python_Api文档
    pycharm快捷键
    appium运行时启动失败
    appium运行时每次默认弹出appiumsetting与unlock重装,关闭这两个步骤的方法
    SpringBoot的jar包引用外部properties文件
  • 原文地址:https://www.cnblogs.com/qiangua/p/3454516.html
Copyright © 2011-2022 走看看