实验2继承与派生讲解
- 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; // 使用标准命名空间std
class A
{
protected:
// 数据成员:
int a; // 数据成员
public:
// 公有函数:
A(int x): a(x){ } // 构造函数
void Show() const{ cout << a << endl; } // 显示a之值
};
class B
{
protected:
// 数据成员:
int b; // 数据成员
public:
// 公有函数:
B(int x): b(x){ } // 构造函数
void Show() const{ cout << b << endl; } // 显示a与b之值
};
class C: public A, public B
{
public:
// 公有函数:
C(int x, int y): A(x), B(y){ } // 构造函数
void Show() const // 显示b之值
{ cout << a << "," << b << endl; }
};
int main(void) // 主函数main(void)
{
C obj(5, 18); // 定义对象
obj.Show(); // 显示相关信息
obj.A::Show(); // 显示相关信息
obj.B::Show(); // 显示相关信息
system("PAUSE"); // 调用库函数system( ),输出系统提示信息return 0; // 返回值0, 返回操作系统
}
3.程序填空。下面程序主要测试类构造函数的初始化列表与作用域分辨符,请完成程序。
// 文件名: main.cpp
#include
using namespace std; // 使用标准命名空间std
class A
{
private:
// 数据成员:
int a; // 数据成员
public:
// 公有函数:
A(int x): a(x) { } // 构造函数
void Show() const // 显示a之值
{ cout << "a:" << a << endl; }
};
class B: public A
{
protected:
// 数据成员:
int b; // 数据成员
public:
// 公有函数:
B(int x, int y): A(x) , b(y){ } // 构造函数
void Show() const // 显示相关信息
{
A::Show(); // 调用基类A的成员函数Show()
cout << "b:" << b << endl; // 显示b之值
}
};
int main(void) // 主函数main(void)
{
B obj(5, 18); // 定义对象
obj.Show(); // 显示相关信息
system("PAUSE"); // 调用库函数system( ),输出系统提示信息
return 0; // 返回值0, 返回操作系统
}
4.改正下面程序中的错误,使其能正常运行。
// 文件名: main.cpp //1 #include
//4 // 基类Base //5 class Base //6 { //7 private: //8 // 数据成员: //9