C++学习笔记(4)——派生类的构造函数和析构函数
2008-03-11 21:21
691 查看
陆续贴出学习C++时做的笔记
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
/**//************************************************************************
* 派生类的构造函数和析构函数
************************************************************************/
#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;
}
运行结果:
/**//************************************************************************
* 派生类的构造函数和析构函数
************************************************************************/
#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;
}
运行结果:
/**//************************************************************************
* 派生类的构造函数和析构函数
************************************************************************/
#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;
}
运行结果:
本博客(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;
}
运行结果:
相关文章推荐
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- C++学习笔记(5)——基类、派生类的构造函数、析构函数的调用顺序
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
- C++学习笔记(调用构造函数和析构函数的顺序)
- 【菜鸟C++学习笔记】12.构造函数与析构函数
- C++学习笔记一、构造函数和析构函数的概念
- 学习笔记之深入浅出MFC 第8章 C++重要性质---构造函数与析构函数
- C++ 析构函数与构造函数 学习笔记1
- c++学习笔记之构造函数和析构函数
- 《C++ Primer Plus》10.3 类的构造函数和析构函数 学习笔记
- 【C++面向对象学习笔记】-构造函数和析构函数
- C++学习笔记(17)——虚函数与构造函数、析构函数
- C++学习之路—继承与派生(二):派生类的构造函数与析构函数
- C++ 学习笔记(13)拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数、右值引用、引用限定符
- EffectiveC++第三章构造函数析构函数和赋值操作符学习笔记
- C++学习笔记-2-构造函数和析构函数
- C++学习笔记12 构造函数与析构函数下
- C++学习笔记51——在构造函数和析构函数中调用虚函数