实验2继承及派生讲解.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 2 继承与派生
2.1 实验目的
1.熟练掌握类的继承,能够定义和使用类的继承关系。
2.掌握派生类的声明与实现方法。
3.掌握类构造函数的初始化列表与作用域分辨符的使用方法。
4.理解虚基类在解决二义性问题中的作用。
2.2 实验工具与准备工作
在开始实验前,应回顾或复习相关内容。
需要一台主算机,其中安装有Visual C++ 6.0 等集成开发环境软件。
2.3 实验内容
1.先阅读下列程序,写出执行结果。然后输入程序,调试程序,比较结果的正确性。
// 文件名 : main.cpp
#include
using namespace std; // 使用标准命名空间 std
class A
{
public:
// 公有函数 :
A(){ cout << " 构造 A" << endl; } // 构造函数
~A(){ cout << " 析构 A" << endl; } // 析构函数
};
class B: public A
{
public:
// 公有函数 :
B(){ cout << " 构造 B" << endl; } // 构造函数
~B(){ cout << " 析构 B" << endl; } // 析构函数
};
class C: public B
{
public:
// 公有函数 :
C(){ cout << " 构造 C" << endl; } // 构造函数
~C(){ cout << " 析构 C" << endl; } // 析构函数
};
int main(void)//主函数main(void)
{
C obj;//定义对象
system("PAUSE");//调用库函数system( ),输出系统提示信息return 0;//返回值0,返回操作系统
}
2.先阅读下列程序,写出执行结果。然后输入程序,调试程序,比较结果的正确性。
//文件名 : main.cpp
#include
using namespace std;
class A
{
protected:
//数据成员 :
int a;
public:
//公有函数 :
A(int x): a(x){ }
void Show() const{ cout << a << endl; } };
class B
{
protected:
//数据成员 :
int b;
public:
//公有函数 :
B(int x): b(x){ }
void Show() const{ cout << b << endl; } };
class C: public A, public B
{
public:
//公有函数 :
C(int x, int y): A(x), B(y){ }
void Show() const
{ cout << a << "," << b << endl; }
};
int main(void)
{
C obj(5, 18);
obj.Show();
obj.A::Show();
obj.B::Show();
system("PAUSE");
return 0;
} //预处理命令
//使用标准命名空间 std
//数据成员
//构造函数
//显示 a 之值
//数据成员
//构造函数
//显示 a 与 b 之值
//构造函数
//显示 b 之值
//主函数 main(void)
//定义对象
//显示相关信息
//显示相关信息
//显示相关信息
//调用库函数 system( ) ,输出系统提示信息//返回值 0, 返回操作系统
3.程序填空。下面程序主要测试类构造函数的初始化列表与作用域分辨符,请完成程序。
//文件名: main.cpp
#include
//使用标准命名空间std
class A
{
private:
//数据成员 :
int a;//数据成员
public:
//公有函数:
A(int x):a(x){ } void Show() const
{ cout << "a:" << a << endl; } //构造函数
//显示a之值
};
class B: public A
{
protected:
//数据成员 :
int b;//数据成员
public:
//公有函数:
B(int x, int y): void Show() const { A(x) , b(y){ } //构造函数
//显示相关信息
A::Show();
cout << "b:" << b << endl; //调用基类
//显示
A 的成员函数
b 之值
Show()
}
};
int main(void) //主函数main(void) {
B obj(5, 18); obj.Show(); //定义对象
//显示相关信息
system("PAUSE"); return 0; //调用库函数
//返回值0,
system( )
返回操作系统
,输出系统提示信息
}
4.改正下面程序中的错误,使其能正常运行。
// 文件名 : main.cpp //1 #include
//4 // 基类 Base //5 class Base //6 { //7 private: //8 // 数据成员 : //9