当前位置:文档之家› 实验6-继承与派生(1)

实验6-继承与派生(1)

实验六继承与派生(1)
1.1 实验目的
(1)理解继承的含义以及声明;
(2)理解共有派生、私有派生和保护派生的含义以及使用;
(3)理解单派生类中构造函数和析构函数的调用顺序。

1.2 实验内容
1、定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:
(1)CLine类含有计算直线长度和斜率的成员函数;
(2)CCircle类含有计算圆面积的成员函数。

2、程序阅读。

(1)以下程序有两大错误,请修改程序,写出程序运行结果并分析。

#include <iostream>
using namespace std;
class CBase
{
public:
CBase(int a):a(a)
{}
protected:
void print()
{
cout<<"a="<<a<<endl;
}
private:
int a;
};
class CDerive : public CBase
public:
void print()
{
CBase::print();
cout<<"b="<<b<<endl;
}
private:
int b;
};
int main()
{
CDerive d;
d.print();
CBase b;
b.print();
return 0;
}
(2)分析基类和派生类的构造和析构顺序。

#include <iostream>
using namespace std;
class CBase
{public:
CBase(int a):a(a)
{cout<<"base structure"<<endl;}
~CBase()
{cout<<"base destructure"<<endl;}
void print()
{cout<<"a="<<a<<endl;}
protected:
int a;
};
class CDerive : public CBase
{public:
CDerive(int a, int b,int c):CBase(a),b(b),c(c)
{cout<<"derive structure"<<endl;}
~CDerive()
{cout<<"derive destructure"<<endl;}
void print()
{CBase::print();
cout<<"b.a="<<b.a<<endl;
cout<<"c="<<c<<endl;
}
private:
CBase b;
int c;
};
int main()
{CDerive d(1,2,3); -----------------------------------------------------①
d.print();
return 0;
}
1.3 实验报告要求
1.包含源程序和程序运行结果截图。

2.程序或运行结果分析。

3.实验心得体会。

相关主题