基类指针强制转换为派生类指针

“基类指针强制转换为派生类指针”相关的资料有哪些?“基类指针强制转换为派生类指针”相关的范文有哪些?怎么写?下面是小编为您精心整理的“基类指针强制转换为派生类指针”相关范文大全或资料大全,欢迎大家分享。

学会用指针--指针强制转换

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

学会用指针--指针强制转换

指针有着非常重要的地位,它的运用非常灵活,正因为此也给软件带来了许多不安全因素.所以在JAVA中取消了指针的概念,但是要注意的是它仍然以数组的形式存在,正确灵活的运用它可以有效的表示复杂的数据结构、动态的分配内存、方便的使用内存中的字符串(下面的例子会说明这个问题)、有效的使用数组等.因此编写优秀的软件以及深入的理解程序语言,指针非常重要. 下面是一段C代码,展示了用指针的强制转换类型来访问对象的字节表示.

#include

typedef unsigned char *byte_pointer; //将指针变量声明为类型\内存中指向1个字节

void show_bytes(byte_pointer start, int len) { int i;

for (i = 0; i < len; i++) printf(\//注释1 printf(\}

void show_twocomp() {

short int x = 12345; //12345的十六进制表示为:00 00 30 39 ,这里涉及\大/小端机\问题,请大家查阅相关质料

show_bytes((byte_pointer) &x, sizeof(short int

C++继承与派生类习题

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

第九章继承与派生类

9.2 典型例题分析与解答

例题1:下列对派生类的描述中,( )是错误的。 A. 一个派生类可以作为另一个派生类的基类 B. 派生类至少有一个基类

C. 派生类的成员除了它自己的成员外,还包含了它的基类成员 D. 派生类中继承的基类成员的访问权限到派生类保持不变 答案:D

分析:一个派生类可以作为另一个派生类的基类。无论是单继承还是多继承,派生类至少有一个基类。派生类的成员除了它自己的成员外,还包含了它的基类成员。派生类中继承的基类成员的访问权限到派生类受继承方式影响的,对于私有继承,基类的public,protected成员在派生类中作为private成员;对于公有继承,基类的public,protected成员在派生类中访问属性不变;对于保护继承,基类的public、protected成员在派生类中作为protected成员。 例题2:派生类的对象对它的哪一类基类成员是可以访问的?( )

A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员 C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员 答案:A 分析:公

实验五:派生类和继承(二)

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

金山学院C++课程实验报告

福建农林大学金山学院实验报告

系(教研室):信息与机电工程系 专业:计算机科学与技术 年级: 实验课程:面向对象程序设计 姓名: 学号: 实验室号

计算机号 实验时间: 指导教师签字: 成绩:

实验5 派生类和继承(二)

一、实验目的和要求

(1)掌握派生类的声明与定义方法,进一步理解类的继承的概念,能够定义和使用类的继承关系。

(2)熟悉公有派生和私有派生的访问特性。

(3)了解虚基类在解决二义性问题中的作用。

二、实验内容和原理

1、试写出所能想到的所有形状(包括二维的和三维的),生成一个形状层次类结构。生成的层次结构以Shape作为基类,并由此派生出TwoDimShape类和ThreeDimShape类。它们的派生类是不同形状类,定义层次结构中的每一个类,并用函数main()进行测试。

2、设计一个学生类CStudent。数据成员包括学生姓名,性别,年龄,学号,已修学分。成员函数包括输入输出或修改学生姓名、学号,增加已修学分。设计一个教师类CTeacher。数据成员包括教师姓名,性别,年龄,职称,担任

MFC中CWnd类及其派生类对话框、消息处理、窗口操作

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

MFC中CWnd类及其派生类对话框、消息处理、窗口操作

CWnd类

我们在屏幕上看到的所有对象都和窗口有关,它们或者派生于CWnd,属继承关系,如对话框、工具栏、状态栏、子控件;或者被CWnd合成,属服务员与服务对象关系,如图标、菜单、显示设备。 CWnd类封装的窗口操作主要包含窗口的创建和销毁、操作窗口风格、操作窗口状态、窗口子类化、获取指定窗口等。

当然,CWnd还实现了其他功能: 1、绘制窗口

GetDC()//取得客户区显示设备上下文

GetWindowsDC()//取得整个窗口的显示设备上下文 ReleaseDC() BeginPaint() EndPaint() PrintClient()

RedrawWindow()//重绘客户区的某区域 2、操作窗口子控件

GetDlgItem():取得(临时的)控件对象指针

SetDlgItemText()和GetDlgItemText():设置、取得控件标题 SubclassDlgItem():将控件句柄与相应类相关联

DlgDirList()和DlgDirListComboBox():以文件列表或目录列表填充(组合框)列表框 CheckDlgButton()和CheckRadioButt

MFC中CWnd类及其派生类对话框、消息处理、窗口操作

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

MFC中CWnd类及其派生类对话框、消息处理、窗口操作

CWnd类

我们在屏幕上看到的所有对象都和窗口有关,它们或者派生于CWnd,属继承关系,如对话框、工具栏、状态栏、子控件;或者被CWnd合成,属服务员与服务对象关系,如图标、菜单、显示设备。 CWnd类封装的窗口操作主要包含窗口的创建和销毁、操作窗口风格、操作窗口状态、窗口子类化、获取指定窗口等。

当然,CWnd还实现了其他功能: 1、绘制窗口

GetDC()//取得客户区显示设备上下文

GetWindowsDC()//取得整个窗口的显示设备上下文 ReleaseDC() BeginPaint() EndPaint() PrintClient()

RedrawWindow()//重绘客户区的某区域 2、操作窗口子控件

GetDlgItem():取得(临时的)控件对象指针

SetDlgItemText()和GetDlgItemText():设置、取得控件标题 SubclassDlgItem():将控件句柄与相应类相关联

DlgDirList()和DlgDirListComboBox():以文件列表或目录列表填充(组合框)列表框 CheckDlgButton()和CheckRadioButt

厦理实验四派生类和继承

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

《C++面向对象程序设计》实验报告

实验序号:03 实验项目名称:派生类与继承 学 号 实验地点 姓 名 指导教师 雷锋 专业 实验时间 一、实验目的及要求 (1)掌握派生类的声明方法和派生类构造函数的定义方法; (2)掌握不同继承方式下,基类成员在派生类中的访问属性; (3)掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则; (4)学习虚函数在解决二义性问题中的作用。 二、实验设备(环境)及要求 Micorsoft Visual C++ 6.0 三、实验内容与步骤(题目、算法和结果描述) 1、输入下列程序。 #include using namespace std; class Base{ public: void setx(int i) { x=i;} int getx() { return x;} public: int x; }; class Derived:public Base{ public: void sety(int i) {y=i;} int gety() { return y;} void show() {cout<<\ //语句1 public: int y; }; int main() { Derived bb; //语句2 bb.setx(16); //语句3 bb.sety(25); //语句4 bb.show(); //语句5 cout<<\ //语句6 cout<<\ //语句7 cout<<\ //语句8 cout<<\ //语句9 return 0; } (1) 写出程序的运行结果。 【运行结果截图】: (2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。 1) 将基类Base中的数据成员x的访问权限改为private时,会出现哪些错误,为什么? 【运行结果分析】: 私有继承不能访问基类公有成员的对象。 2) 将基类Base中的数据成员x的访问权限改为protected时,会出现哪些错误,为什么? 【运行结果分析】: 私有继承不能访问基类保护成员的对象。 3) 在原程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? 【运行结果分析】: 公有继承时不能访问基类的私有成员的内部和对象,不能访问基类的保护成员的对象。 4) 在原程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么? 【运行结果分析】: 保护继承时不能访问基类的私有成员的内部和对象,不能访问基类公有成员和保护成员的对象。 2、编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Persona,并作为学生类Student和教师类Teacher的基类。 【person类结构】:class Persona{ public: Persona(int numberl,string namel,string sexl,int agel) {number=numberl; name=namel; sex=sexl; age=agel; } void print() {cout<<\cout<<\cout<<\cout<<\} protected: int number; string name; string sex; int age; }; 【Student类结构】:class Student:private Persona{ public: Student(int numberl,string namel,string sexl,int agel,string gradel,float scorel) :Persona(numberl,namel,sexl,agel) { grade=gradel; score=scorel; } void print() {Persona::print(); cout<<\cout<<\} private: string grade; float score; }; 【Teacher类结构】:class Teacher:private Persona{ public: Teacher(int numberl,string namel,string sexl,int agel,string positionl,string departmentl) :Persona(numberl,namel,sexl,agel) { position=positionl; department=departmentl; } void print() {Persona::print(); cout<<\cout<<\} private: string position; string department; }; 【运行结果截图】: 3、按要求阅读、编辑、编译、调试和运行以下程序。 (1)阅读、编辑、编译、调试和运行以下程序,并写出程序运行结果。 #include #include

c++指针类练习题及答案

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

1、利用指针,编写用于交换两个整型变量值的函数。程序运行结果如下:

输入:5 6 输出:6 5

#include using namespace std;

void swap(int *xp,int *yp) {

int tmp; tmp=*xp; *xp=*yp; *yp=tmp; }

int main() {

int a,b; cin>>a>>b; swap(&a,&b);

cout<

2、编写主程序,将输入字符串反序输出。程序运行结果如下:

输入:ABCDEFGHIJK 输出:KJIHGFEDCBA

#include #include using namespace std; int main() {

char str[100]; cin>>str; int len;

len=strlen(str);

char *p=&str[len-1]; while(p>=str) {

cout<<*p; p--; }

cout<

}

3、使用指针编写一个用于对整型序列进行排序的函数,排序方法

实验五实现由Object类派生出的Box类

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

内蒙古工业大学信息工程学院

报告类型:实验报告 □ 预习报告 □

报告成绩:__________ 指导教师审核(签名):_______________

年 月 日

实验五

一、实验目的

1、学习使用类的继承关系、定义派生类。 2、熟悉不同继承方式下对基类成员的访问控制。 3、学习派生类的构造和析构函数的调用顺序。

二、题目

实现由Object类派生出的Box类

三、要求

1、声明一个Object类,有数据成员weight及相应的操作函数,由此派生出Box类,增加数据成员height和width及相应的操作函数。

2、声明一个Box对象,观察构造函数与析构函数的调用顺序。 3、分析程序运行结果。

4、下课前完成实验内容,提交给教师检查。

四、实验步骤

1、建立一个控制台应用程序项目lab5,向其中添加一个C++头文件box.h,在该头文件中编写Object类和派生类Box的定义。(方法参照实验二)

2、向项目lab5中添加一个C++源文件box.cpp,在其中实现Object类和派生类Box。 3、向项目lab5中添加一个C++源文件exp5.cpp,在其中定义main( )函数,测试Box类,观察程序的执行情况。

一.程序代码:

实验九 指针

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

实验九 指针

⒈实验目的、要求

⑴掌握指针的概念,会定义和使用指针变量。

⑵能正确使用字符串的指针和指向数组的指针变量。 ⑶正确使用数组的指针和指向数组的指针变量。

⑷正确使用字符串的指针和指向字符串的指针变量。

⑸正确使用指向函数的指针变量;了解指向指针的指针的概念及其使用方法。 ⒉实验内容

⑴输入程序并运行,观察运行结果并分析。 sub( int x,int y,int *z) {*z=y-x;}

#include \int main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

printf(\return(0);}??

预测结果:-5、-12、-7

运行结果:-5、-12、-7 与预测结果一致。 程序分析:

sub( int x,int y,int *z)为子函数,其中有两个整型变量和一个指针变量;第一次调用子函数时得到a的值-5,之后的两次调用中便使用了之前得到的结果,所以结果为-5、-12、-7。

⑵补全程序并运行

按字符串比较两个字符串s、t的大小,如果s大于t,则返回正值,等于返回0,小于返回负值。

#include \sub(char *s,

实验7 指针

标签:文库时间:2024-11-21
【bwwdw.com - 博文网】

实验7 指针

【实验目的】

① 掌握指针的概念,会定义及使用指针变量、指针数组、行指针;

② 掌握指针的运算,会采用指针方法访问一维、二维数组;理解指针和数组的关系; ③ 掌握指针作为函数参数,设计通用的函数;实现对一维数组的排序、查找,矩阵运算;及常用的字符串处理函数;熟悉动态分配内存方法;

【实验7.1】在10个元素的数组中找出与平均值最接近的元素,并输出该元素的值(要求用数组指针访问一维数组)。 【指导】

算法分析:

本题要解决两个问题:

(1)计算10个元素的平均值;

(2)找出与平均值最接近的数组元素。

对于第(2)个问题,可以将第一个元素与平均值的差为基准,然后依次计算其余各个元素与平均值的差,并与基准进行比较(注意要按绝对值进行比较),从而找出最小值,它所对应的元素就是与平均值最接近的元素。

参考程序:

#include

#include void main() { int i,k;

float a[10],aver=0,b,diff,*p=a; for(i=0;i<10;i++)

scanf(\输入原始数据存入数组 for(i=0;i<10;i++)

aver+=p[i]; //计算累加和