C++学习笔记(4)——派生类的构造函数和析构函数

晨曦之光 发布于 2012/03/09 14:13
阅读 388
收藏 0
陆续贴出学习C++时做的笔记
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
    
   

例1:观从派生类向基类传递参数

/************************************************************************
* 派生类的构造函数和析构函数
***********************************************************************
*/

#include 
< IOSTREAM.H >
// 基类
class  CBase
{
    
int x;
public:
    CBase(
int n){cout<<"the base class constructor!"<<endl;        x=n;    }
    
~CBase()    {cout<<"the base class deconstructor!"<<endl;}
    
virtual void showx(){cout<<"in the base class x = "<<x<<endl;}     //此处有没有virtual效果一样
}
;

// 派生类
class  CDerive: public  CBase
{
    
int y;
public:
    CDerive(
int n,int m):CBase(m){    cout<<"the derived class constructor!"<<endl;    y=n;    }
    
~CDerive(){cout<<"the derived class deconstructor!"<<endl;}
    
void showy(){    cout<<"in the derived class y = "<<y<<endl;    }
}
;
main()
{    CDerive obj1(123,456);
    obj1.showx();
    obj1.showy();
    CBase obj2(
1234);
    obj2.showx();
    
return ;
}
   
运行结果:
    

   

2:调用派生类的构造函数时默认调用基类的构造函数

 

/************************************************************************
* 派生类的构造函数和析构函数
***********************************************************************
*/

#include 
< IOSTREAM.H >
// 基类
class  CBase
{
    
int x;
public:
    CBase()
{    cout<<"the base class constructor!"<<endl;        x=100;}
    
~CBase(){cout<<"the base class deconstructor!"<<endl;}
    
virtual void showx(){cout<<"in the base class x = "<<x<<endl;    }     //此处有没有virtual效果一样
}
;

// 派生类
class  CDerive: public  CBase
{
    
int y;
public:
    CDerive()
{cout<<"the derived class constructor!"<<endl;        y=200;}
    
~CDerive(){cout<<"the derived class deconstructor!"<<endl;}
    
void showy(){    cout<<"in the derived class y = "<<y<<endl;    }
}
;

main()
{
    CDerive obj1;
    obj1.showx();
    obj1.showy();
    CBase obj2;
    obj2.showx();
    
return ;
}
 
运行结果:
 

   

3:派生类和基类同名成员函数的调用

  

/************************************************************************
* 派生类的构造函数和析构函数
***********************************************************************
*/

#include 
< IOSTREAM.H >
// 基类
class  CBase
{
    
int x;
public:
    CBase()
{    cout<<"the base class constructor!"<<endl;        x=100;}
    
~CBase(){cout<<"the base class deconstructor!"<<endl;}
    
virtual void show(){cout<<"in the base class x = "<<x<<endl;}        //此处有没有virtual效果一样
}
;

// 派生类
class  CDerive: public  CBase
{
    
int y;
public:
    CDerive()
{cout<<"the derived class constructor!"<<endl;        y=200;}
    
~CDerive(){cout<<"the derived class deconstructor!"<<endl;}
    
void show(){cout<<"in the derived class y = "<<y<<endl;}
}
;

main()
{
    CDerive obj1;
    obj1.CBase::show();
    obj1.show();
    CBase obj2;
    obj2.show();
    
return ;
}
  
运行结果:
  

原文链接:http://blog.csdn.net/livelylittlefish/article/details/2171118
加载中
0
PYPlus
PYPlus
为什么代码都是开源中国的logo,看不清楚代码和运行结果。是有意为之呢还是我的浏览器显示不正常
返回顶部
顶部