未完待续


1
#include <iostream> 2 #include<typeinfo> 3 #include<vector> 4 5 using namespace std; 6 7 class Base{ 8 public: 9 virtual void fun(){cout << "Base::fun\n";} 10 }; 11 class Derived : public Base{ 12 public: 13 void fun(int i){cout << "Derived the i = " << i << endl;} 14 }; 15 class Sunzi : public Derived{ 16 public: 17 void fun(){cout << "in Sunzi\n";} 18 }; 19 20 int main() 21 { 22 Derived de; 23 de.fun(1); 24 //de.fun(); //error 25 Sunzi sun; 26 sun.fun(); 27 Base *ba = &sun; 28 ba->fun(); 29 return 0; 30 }

 

 1 #include <iostream>
 2 #include<typeinfo>
 3 #include<vector>
 4 
 5 using namespace std;
 6 
 7 class Base{
 8 public:
 9     virtual void fun(){cout << "Base::fun\n";}
10 };
11 class Derived : public Base{
12 public:
13     void fun(){cout << "in Derived\n";}
14     void fun(int i){cout << "Derived the i = " << i << endl;}
15 };
16 class Sunzi : public Derived{
17 public:
18     void fun(){cout << "in Sunzi\n";}
19     void fun(int i){cout << "Sunzi the i = " << i << endl;}
20 };
21 
22 int main()
23 {
24     Derived *de = new Derived();
25     Derived de2;
26     Base *ba;
27     Sunzi sun;
28 //
29     de->fun(1);
30     de->fun(); //error
31 
32     ba = &de2;
33     ba->fun();
34 
35     sun.fun();
36 
37     ba = &sun;
38     ba->fun();
39 
40     de = &sun;
41     de->fun();
42     de->fun(1);
43     return 0;
44 }

#include <iostream>
#include<typeinfo>
#include<vector>

using namespace std;

class Base{
public:
    virtual void fun(){cout << "Base::fun\n";}
};
class Derived : public Base{
public:
    using Base::fun;    //using solve redefine
    void fun(int i){cout << "Derived the i = " << i << endl;}
};
class Sunzi : public Derived{
public:
    void fun(){cout << "in Sunzi\n";}
};

int main()
{
    Derived de;
    de.fun(1);
    de.fun(); //ok
    Sunzi sun;
    sun.fun();
    Base *ba = &sun;
    ba->fun();
    return 0;
}

#include <iostream>
#include<typeinfo>
#include<vector>

using namespace std;

class Base{
public:
    virtual void fun(){cout << "Base::fun\n";}
    virtual void fun(int i){cout << "Base:: i = " << i << endl;}
};
class Derived : public Base{
public:
    void fun(){cout << "in Derived\n";}
    void fun(int i){cout << "Derived the i = " << i << endl;}
};

int main()
{
    Base *ba;
    Derived de;
    de.fun(1);
    de.fun(); //ok

    ba = &de;
    ba->fun();
    ba->fun(1);

    return 0;
}

 

posted on 2018-05-18 14:42  CreatorKou  阅读(115)  评论(0编辑  收藏  举报

导航