Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244786
  • 博文数量: 62
  • 博客积分: 973
  • 博客等级: 准尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-16 23:25
文章分类

全部博文(62)

文章存档

2013年(1)

2012年(14)

2011年(47)

分类: C/C++

2011-12-08 13:51:36

  1. #include<stdio.h>
  2. #include<string>

  3. class Value
  4. {
  5. public:
  6.     Value(int nVal) {
  7.         m_nVal=nVal;
  8.         printf("Call Value::Value(int nValue)/n");
  9.     }
  10.     ~Value() {
  11.         printf("Call Value::~Value()/n");
  12.     }
  13.     Value& operator=(int nVal)
  14.     {
  15.        m_nVal=nVal;
  16.        printf("Call Value::operator=/n");
  17.        return *this;
  18.     }
  19.     void Dump() {
  20.         printf("Value::m_nVal=%d/n",m_nVal);
  21.     }
  22. protected:
  23.     int m_nVal;
  24. };
  25. class Base
  26. {
  27. public:
  28.     Base() {
  29.         Init();
  30.     }
  31.     virtual ~Base() {
  32.         Release();
  33.     }
  34.     virtual void Init() {
  35.         printf("Call Base::Init()/n");
  36.     }
  37.     virtual void Release() {
  38.         printf("Call Base::Release()/n");
  39.     }
  40.     virtual void Dump() {
  41.         printf("Call Base::Dump()/n");
  42.     }
  43. };

  44. class Derive:public Base
  45. {
  46. public:
  47.     Derive() {
  48.         printf("Call Derive::Derive()/n");
  49.     }
  50.     ~Derive() {
  51.         printf("Call Derive::~Derive()/n");
  52.     }
  53.     virtual void Init() {
  54.         m_Val=2;
  55.         printf("Call Derive::Init()/n");
  56.     }
  57.     virtual void Release() {
  58.         printf("Call Derive::Release()/n");
  59.     }
  60.     virtual void Dump() {
  61.         m_Val.Dump();
  62.     }
  63. protected:
  64.     static Value m_Val;
  65. };
  66.    
  67. Value Derive::m_Val=0;
  68.    
  69. void DestroyObj(Base* pOb)
  70. {
  71.     pOb->Dump();
  72.     delete pOb;
  73. }

  74. void main()
  75. {
  76.     Derive *pOb = new Derive;
  77.     DestroyObj(pOb);
  78. }
输出:
    Call Value::Value(int nValue)    //静态变量构造
    Call Base::Init()                //基类构造
    Call Derive::Derive()            //派生类构造
    Value::m_nVal=0                  //多态
    Call Derive::~Derive()           //派生类析构
    Call Base::Release()             //基类析构
    Call Value::~Value()             //静态变量析构
 
 
阅读(1300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~