文档介绍:c,, 实验报告心得篇一: C++ 实验总结报告 C++ 实验总结报告研究课题:图形编辑器一、实验目的 1. 熟悉 C++ 的一些重要性质,利用封装、继承、虚函数和多态性等特性,通过实验学习如何对各类图元的属性和方法进行合理的封装 2. 学习 Microsoft 的 Visual C++ 编程工具 3. 掌握 MFC 的相关知识 4. 掌握基本的文件保存、读取以及操作封装技术二、实验目的设计一个简单的图形编辑器三、实验所用仪器、设备计算机: PentiumIII 800 以上 256M 内存操作系统: Windows 2000/XP 开发集成环境: Visual C++ 四、软件功能简介(注:此软件是从网上下载得来) 该软件具有汉化的菜单界面(仿 Windows 自带画图软件) ,具有文件打开、编辑、保存等功能。编辑部分包括可以在编辑区域画直线、圆、矩形、曲线等矢量图形,可插入文字,可以修改线条的线型、颜色等基本属性。五、部分代码分析 1. 类的初始分析: class CDrawApp : public CWinApp { public: CDrawApp(); // Overrides virtual BOOL InitInstance(); // Implementation protected: //{{AFX_MSG(CDrawApp) afx_msg void OnAppAbout(); // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() }; 学习 C++ 我们最需要理解的就是它面向对象的设计思想。这种思想可以在类和对象上得到充分的体现。类是面向对象程序设计的核心,它实际上是由用户定义的一种新的复杂数据类型。它是通过抽象数据类型 ADT 方法来实现的一种数据类型,将不同类型的数据和与这些数据相关的操作封装在一起形成一个集合体。因此,它具有更高的抽象性,实现了信息的隐藏和封装。对象是某种类的一个实例,是类的具体体现。一个类可以有多个对象。分析这一段代码,编程者将 CDrawApp(); 设置为公有函数,这样做就是在整个函数的外面开了一个口,使用户可以利用这一函数处理具体问题而不必详解函数内部,是面向对象中封装特性的一个具体体现;另外,此函数中还包含了构造函数与析构函数,构造函数完成对新对象的初始化工作, 析构函数是构造函数的配对物, 它实现与构造函数相反的功能。另外,这段代码中还包括布尔型虚函数 InitInstance() ,这是函数重载,也是多态性的具体体现。由这段代码我们可以了解关于类和对象的一些知识,为我们进一步了解面向对象程序设计的思想精髓奠定了基础。 2. 对构造函数和析构函数的分析构造函 reateLine::CCreateLine() : m_begin(0,0), m_end(0,0) {m_nStep = 0; // 初始化操作步为 0} 构造函数:C++ 中“类”只定义了一组对象的类型。要使用这个类还必须用“类”说明它的对象,每个对象中的数据成员还必须赋初值,这些功能都是由构造函数完成的。此造函数用初始化列表的方式对直线类的私有成员进行初始化,同时记下操作步 m_nStep 是直线类从指令类中继承来的成员,它在指令类中属于保护成员,在直线类中则成为私有成员。这是数据共享与数据保护两者兼顾时的一种处理方法。reateLine::~CCreateLine() {} 它是构造函数的配对物,与构造函数一样是与类同名的成员函数,并在函数名前加上一个’~’以便与构造函数相区别。此析构函数中没有任何操作语句,但它并非没有任何操作。在任何一个对象消失时都要调用本类的析构函数进行扫尾工作。在构造对象时,构造函数分配资源给程序,在对象作用结束后,这些资源的释放就要靠析构函数。当然析构函数中也是可以有语句的,当需要在对象消失之前执行某种操作时,可以把语句写在里边。 3. 继承和虚函数分析 class CDrawRect : public CDrawObj { protected: DECLARE_SERIAL(CDrawRect); CDrawRect(); public: CDrawRect(const CRect& position);// 添加了对新数据成员的初始化// Implementation public: virtual void Serialize(CArchive& ar);// 添加了对新数据成