分类: C/C++
2011-08-06 14:04:24
/*
* 继承
* 派生类构造函数的执行情况
* Lzy 2011-七夕
*/
#include
using namespace std;
class CPoint
{
protected:
float x, y;
public:
CPoint(float _x, float _y):x(_x),y(_y){cout<<"构造函数CPoint被调用:"<
CPoint(const CPoint & P):x(P.x),y(P.y){cout<<"复制构造函数CPoint被调用:"<
float getX(){return x;}
float getY(){return y;}
};
class CCircle : public CPoint
{
protected:
float r;
public:
CCircle(float _x, float _y,float _r):CPoint(_x,_y),r(_r){cout<<"构造函数CCircle被调用:"<
CCircle(const CPoint &C,float _r):CPoint(C),r(_r){cout<<"复制构造函数CCircle被调用:"<
double area(){return 3.14*r*r;}
double circumference(){return 3.14*2*r;}
};
int main(void)
{
CPoint p1(1,1);
CCircle(p1,2);
return 0;
}
/*
* 继承
* 析构函数执行,先执行派生类,再执行子对象最后执行基类的析构函数
* Lzy 2011-七夕
*/
#include
using namespace std;
class A
{
private:
int a, b;
public:
A():a(0),b(0){}
A(int x, int y):a(x),b(y){}
~A(){cout<<"A类析构函数:"<" "<
};
class B:public A
{
private:
int c;
public:
B():c(0){}
B(int x, int y,int z):A(x,y),c(z){}
~B(){cout<<"B类析构函数:"<
};
int main(void)
{
A a(3,3);
B b(5,5,5);
return 0;
}