DanceFire的专栏

天地不仁,以万物为刍狗

用户操作
[即时聊天] [发私信] [加为好友]
舞焰ID:DanceFire
266736次访问,排名230好友0人,关注者1
DanceFire的文章
原创 51 篇
翻译 4 篇
转载 0 篇
评论 928 篇
DanceFire的公告
最近评论
hqfmyway:出现过同样的问题,谢谢解惑!
phhwr85:非常感谢,正郁闷中!
herry0628:A gold website for wow gold and
buy wow gold sevise.
herry0628:A gold website for wow gold and
buy wow gold sevise.
herry0628:A gold website for wow gold and
buy wow gold sevise.
文章分类
收藏
    相册
    Unix家族族谱图
    编程语言家族族谱
    操作系统相关图片
    插图
    麒麟操作系统相关图片
    L4 微内核实现
    Fiasco - DROPS的底层微内核 (TU Dresden)
    L4Ka::Pistachio (UKa, UNSW)
    seL4 - Secure Embedded L4 (UNSW)
    L4 微内核研究组
    L4 总部
    UKa的L4研究组
    UNSW/NICTA的L4研究组
    L4 文档
    L4 X.2 API的用户手册(UNSW)
    L4-embedded 参考手册 N1 (UNSW)
    基于 L4 的操作系统
    Darwin在L4上的移植 - Darbat (UNSW)
    DROPS - 基于L4的嵌入式实时操作系统 (TU Dresden)
    GNU Hurd在L4上的移植
    Linux在L4上的移植 - L4Linux (TU Dresden)
    Linux在L4上的移植 - Wombat (UNSW)
    Mungi - Single Address Space OS based on L4 (UNSW)
    朋友
    Dancefire's website
    ralph623的专栏(RSS)
    sinboy的菜地(RSS)
    Sunwear(RSS)
    Xinsoft :应用之美,在于药到病除(RSS)
    吕震宇(RSS)
    强强专栏(RSS)
    旁观生活的BT(RSS)
    潇寒的Blog(RSS)
    龙真先生(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 理解继承收藏

    新一篇: C#的数据库应用如何解决内存消耗太大的问题呢? | 旧一篇: 尝试用C++封装Socket库

    #include <iostream>
    
    using namespace std;
    
    int inc = 0;
    string tab()
    {
        string t;
        t.reserve(inc+1);
        for(int i = 0 ; i < inc ; ++i)
        {
            t.push_back('\t');
        }
        return t;        
    }    
    
    class base{
    public:
        base(void){
            inc++;
            cout<<tab()<<"Base::ctor()"<<endl;
            cout<<tab()<<"I am a "<<typeid(this).name()<<endl;
            vfunc();
            func();
            inc--;
        }
        ~base(void){
            inc++;
            cout<<tab()<<"Base::~ctor()"<<endl;
            inc--;
        }
        
        base(double d)
        {
            inc++;
            cout<<tab()<<"Base::ctor( "<<d<<" )"<<endl;
            cout<<tab()<<"I am a "<<typeid(this).name()<<endl;
            vfunc();
            func();
            inc--;
        }    
    
        base(int a){
            inc++;
            cout<<tab()<<"Base::ctor( "<<a<<" )"<<endl;
            cout<<tab()<<"I am a "<<typeid(this).name()<<endl;
            vfunc();
            func();
            inc--;
        }        
        virtual void vfunc(void){
            inc++;
            cout<<tab()<<"Base::Virtual function()"<<endl;
            inc--;
        }
        void func(void){
            inc++;
            cout<<tab()<<"Base::function()"<<endl;
            inc--;
        }
        void call(void){
            inc++;
            cout<<tab()<<"Base::call()"<<endl;
            vfunc();
            func();
            inc--;
        }
    };
    
    class child : public base{
    public:
        child(void){
            inc++;
            cout<<tab()<<"Child::ctor()"<<endl;
            cout<<tab()<<"I am a "<<typeid(this).name()<<endl;
            vfunc();
            func();
            inc--;
        }
        ~child(void){
            inc++;
            cout<<tab()<<"Child::~ctor()"<<endl;
            inc--;
        }
        child(double d)
        {
            inc++;
            cout<<tab()<<"Child::ctor( "<<d<<" )"<<endl;
            cout<<tab()<<"I am a "<<typeid(this).name()<<endl;
            vfunc();
            func();
            inc--;
        }    
       	child(int a) : base( a )
        {
            inc++;
       	    cout<<tab()<<"Child::ctor( "<<a<<" )"<<endl;
            cout<<tab()<<"I am a "<<typeid(this).name()<<endl;
            vfunc();
            func();
            inc--;
       	}    
        virtual void vfunc(void){
            inc++;
            cout<<tab()<<"Child::Virtual function()"<<endl;
            inc--;
        }
        void func(void){
            inc++;
            cout<<tab()<<"Child::function()"<<endl;
            inc--;
        }
    };
    
    int main(void)
    {
        cout<<tab()<<"Before create b"<<endl;
        base b;
        cout<<tab()<<"After create b"<<endl;
        b.vfunc();
        b.func();
        b.call();
        cout<<"-----------------"<<endl;
        cout<<tab()<<"Before create c"<<endl;
        child c;
        cout<<tab()<<"After create c"<<endl;
        c.vfunc();
        c.func();
        c.call();
        cout<<"-----------------"<<endl;
        cout<<tab()<<"Before create c1"<<endl;
        child c1(1);
        cout<<tab()<<"After create c1"<<endl;
        c1.vfunc(); 
        c1.func();
        c1.call();
        cout<<"-----------------"<<endl;
        cout<<tab()<<"Before create c2"<<endl;
        child c2(1.1);
        cout<<tab()<<"After create c2"<<endl;
        c2.call();
    }    
    运行结果:







    Before create b
            Base::ctor()
            I am a P4base
                    Base::Virtual function()
                    Base::function()
    After create b
            Base::Virtual function()
            Base::function()
            Base::call()
                    Base::Virtual function()
                    Base::function()
    -----------------
    Before create c
            Base::ctor()
            I am a P4base
                    Base::Virtual function()
                    Base::function()
            Child::ctor()
            I am a P5child
                    Child::Virtual function()
                    Child::function()
    After create c
            Child::Virtual function()
            Child::function()
            Base::call()
                    Child::Virtual function()
                    Base::function()
    -----------------
    Before create c1
            Base::ctor( 1 )
            I am a P4base
                    Base::Virtual function()
                    Base::function()
            Child::ctor( 1 )
            I am a P5child
                    Child::Virtual function()
                    Child::function()
    After create c1
            Child::Virtual function()
            Child::function()
            Base::call()
                    Child::Virtual function()
                    Base::function()
    -----------------
    Before create c2
            Base::ctor()
            I am a P4base
                    Base::Virtual function()
                    Base::function()
            Child::ctor( 1.1 )
            I am a P5child
                    Child::Virtual function()
                    Child::function()
    After create c2
            Base::call()
                    Child::Virtual function()
                    Base::function()
            Child::~ctor()
            Base::~ctor()
            Child::~ctor()
            Base::~ctor()
            Child::~ctor()
            Base::~ctor()
            Base::~ctor()
    

    发表于 @ 2004年10月16日 20:31:00|评论(loading...)|编辑

    新一篇: C#的数据库应用如何解决内存消耗太大的问题呢? | 旧一篇: 尝试用C++封装Socket库

    评论

    #herry0628 发表于2008-07-14 12:15:22  IP: 220.178.42.*
    A gold website for wow gold and
    buy wow gold sevise.
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © DanceFire