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

陆续贴出学习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 0;
}
   
运行结果:
    

   

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 0;
}
 
运行结果:
 

   

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 0;
}
  
运行结果:
  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值