logo资料库

C++ Qt试题.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
C++部分:
一、选择题:(共10小题,每题3分)
三、编程题:(共3小题 每小题6分)
QT部分:
一、简答题:
B)static C)const D)colatile B)成员函数 B)数据成员时 C)对象时 D)友元函数时 C)内联函数 D)重载函数 B)将 a 的地址赋给变量 Sst D)变量 X 是 a 按位相与作为函数 Set()的参数 C++部分: 一、选择题:(共 10 小题,每题 3 分) 1.类的构造函数被自动调用执行的情况是在定义该类的( C) A)成员函数时 2.说明友元函数使用关键字( A ) A)friend 3.已知类 X 中的一个成员函数说明如下: Void Set(x &a); 其中,X&a 的含义是(C ) A)指向类 X 的指针为 a C)a 是类 X 的对象引用,用来做为 Set()的形参 4.关于 new 运算符的下列描述中( C )是错误的. B) 使用它创建对象或对象数组,可以使用运算符 DELETE 删除 A) 它可以用来动态创建对象和对象数组 D) 使用它调用对象数组时不许指定初始值 C) 使用它创建对象时要调用构造函数 5.允许访问类的所有对象的私有成员,公有成员和保护成员的是( A ) A)友元函数 6.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用( A ) 提供对全局变量的访问 A) 域运算符 7.缺省析构函数的函数体是( C) A)不存在 8.通常拷贝构造函数的参数表是( C ) B)某个对象的成员名 A)某个对象名 C)某个对象的引用名 D)某个对象的指针名 9.对定义重载函数的下列要求中,( D) 是错误的 A)要求参数的个数不同 C)要求参数个数相同时,参数类型不同 10.对于多重继承,有( D ) A.一个派生类只能有一个基类 C.一个基类必须产生多个派生类 二、简答题:(共 8 小题, 总分:30) 1.C 和 C++有什么不同?(3 分) C 是面向过程的语言,c++是面向对象的语言。 C 源程序文件扩展名为.c , 而 C++为 .cpp。 C++可重用性、可扩充性、可维护性、可靠性要强些。 2.面向对象的三个基本特征及各自的作用(4 分) 封装性:对象将私有元素和实现操作的内部细节的结果隐藏起来,并能管理自己的内部状态。 作用:外部只能从对象所表示的 B)要求参数中至少有一个类型不同 D)要求函数的返回值不同 B.一个基类只能产生一个派生类 D.一个派生类可有多个基类 B)随机产生的 C)空的 D)无法确定的 C) 重载 D) 引用 B) 类运算符 具体概念、对象提供的服务和对象提供的外部接口来认识对象。 继承:类间具有共享特征,具有新增部分,具有层次结构。 作用:避免公用代码的重复开发,减少代码和数据冗余。通过增强一致性来减少模块间的接口和界面。 多态性:类中具有相似功能的不同函数使用同一个名称来实现的现象。实现了动态联编,使程序运行效率更高,更容易维护和 操作。 3.c 和 c++中的 struct 有什么不同?(4 分) C 中定义结构体变量要加 struct,而 C++不用,如下例: struct STRING{ char *prt; int length; } 在 C 中: struct STRING str; 4.const 符号的作用有哪些?(4 分) Const 修饰符定义常量。 1.欲阻止一个变量被改变,可以使用 const 关键字。 2.对指针来说,可以指定指针本身为 const,也可以指定指针所指的数据为 const,或二者同时指定为 const; 3.在一个函数声明中,const 可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值; 4.对于类的成员函数,若指定其为 const 类型,则表明其是一个常函数,不能修改类的成员变量; 在 C++中: STRING str;
5.引用与指针有什么区别?(3 分) 引用就是给变量一个别名,使指针运算更加方便。 指针是一个实体,而引用仅是个别名; 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”; 引用不能为空,指针可以为空; 引用是类型安全的,而指针不是(引用比指针多了类型检查) 6.重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?(3 分) 1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。 2、覆盖要求参数列表相同;重载要求参数列表不同。 3、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与 形参表来选择方法体的。 7.static 在类内修饰成员的作用是什么,如何引用这些成员?(4 分) 表明该成员是静态成员,有点类似于全局变量。可以通过“类名::"和“对象名.”两种方法来访问。 8.虚析构函数的作用是什么?(5 分) 在于使用 delete 运算符删除一个对象时,能确保析构函数被正确的执行。 三、编程题:(共 3 小题 每小题 6 分) 1.编写一个字符串处理的类,MyString,实现拷贝构造,‘=’号重载 等基本函数。 已知类 String 的原型为: class String { public: String(const char *str = NULL) { if(str==NULL) { m_data = new char[1]; *m_data = ‘\0’; // 普通构造函数 // 若能加 NULL 判断则更好 } else { } int length = strlen(str); m_data = new char[length+1]; strcpy(m_data, str); // 若能加 NULL 判断则更好 } String(const String &other) { // 拷贝构造函数 int length = strlen(other.m_data); m_data = new char[length+1]; strcpy(m_data, other.m_data); // 若能加 NULL 判断则更好 } ~ String(void) { // 析构函数 delete [] m_data; // 由于 m_data 是内部数据类型,也可以写成 delete m_data;
} String & operate =(const String &other) { if(this == &other) return *this; delete [] m_data; int length = strlen(other.m_data); m_data = new char[length+1]; strcpy(m_data, other.m_data); return *this; // 赋值函数 // 检查自赋值 // 释放原有的内存资源 // 分配新的内存资源,并复制内容 // 若能加 NULL 判断则更好 // 返回本对象的引用 } private: char }; *m_data; // 用于保存字符串 2.使用 MyString 作为成员对象实现一个 Person 类,包含:姓名,年龄。 #include class Mystring{ public: Mystring(char *s) { name=new char [strlen(s)+1]; strcpy(this->name,s); } ~Mystring() { delete name; } private: char *name; }; class Person{ public: Person(int per_age,char *ps_name):per_name(ps_name) { this->age=per_age; } ~Person() { } private: int age; Mystring per_name; }; 3.实现一个 Student 类:有姓名,年龄,学号,老师姓名。
#include class Student{ public: Student(char *student_name,int age,int student_num,char *teacher_name) { this->student_name=student_name; this->age=age; this->student_num=student_num; this->teacher_name=teacher_name; } Student(const Student &temp) { this->student_name=temp.student_name; this->teacher_name=temp.teacher_name; this->student_num=temp.student_num; this->age=temp.age; } ~Student() { delete student_name; delete teacher_name; } private: char *student_name; int age; int student_num; char *teacher_name; }; QT 部分: 一、简答题: 1.什么是 Qt?Qt 能做什么?有哪些优点? (5 分) Qt 是 Trolltech 公司的一个产品,是多平台的 C++图形用户界面应用程序框架。 Qt 能做很多应用软件,如:KDE 桌面环境,Goole 地图,eva 等。 Qt 的优点: 1. 优良的跨平台特性,一劳永逸。 2. 面向对象。 3. 丰富的 API。 4. 信号与槽的消息机制。 5. 编程语言:C++以及 java。 6. 支持 2D/3D 图形渲染,支持 OpenGL 7. XML 支持 8. 国际化,多语言的支持 9. 强大的工具,提高了开发的效率和质量。 10. 帮助文档 assistant 11. 4.5 之后遵循 LGPL 协议,个人应用完全免费
2.Qt 中窗口对象的父子关系如何指定?指定父对象有什么作用及好处? (5 分) 一般通过构造函数中的“QWidget *parent”参数指定 重要作用: 父对象 show 的时候会递归调用其所有子对象,让它们都显示出来。 父对象被销毁时会递归销毁其所有的子对象,让内存管理更加简单。 3.Qt 中信号和槽的作用是什么,如何使用?(6 分) 对象之间通信的高级接口。 可以自定义槽函数用 connect 函数来连接信号或着使用 designer 设计器来设计。通过触发信号来执行槽函数。 4.Qt 中事件是通过什么实现的?有什么注意点?(6 分) 通过虚函数的机制使得我们可以让事件在处理时调用到自定义的事件处理函数。 重新实现这些事件函数。 实现函数要遵循虚函数的语法规则,自定义类中保住函数名、参数一致性。 5.Qt 的发展史以及各个版本的改变 Qt 4 2005 年 6 月 28 日,加入一些模板容器类,用于 Item 的 MVC 架构,2D 描画框架,Unicode 文本渲染,动作驱动的 MainWindow, 版本 4.0。 2005 年 11 月 20 日,支持集成的 SVG、用于打印系统的 PDF 等,版本 4.1。 2006 年 10 月 4 日,支 持 Windows Vista、用于 Widget 风格的 本地 CSS ,在屏 幕上有效渲 染成千上万 个 2D 对象 的 QGraphicsView(替换 QCanvas),版本 4.2。 2007 年 5 月 30 日,加入基于 QSA 的 ECMAScript 脚本引擎 QtScript,增强 Windows Vista、OpenGL 引擎、SVG 文件集成, 版本 4.3。 2008 年 5 与 6 日,支持 Phonon 对媒体、并发的多线程框架、用于内存共享的 IPC 框架、WebKit,增强 XML 等,版本 4.4。 2009 年 3 月 3 日,支持 QtCreator、OpenDocument、新的 License、用于 OS X Cocoa 的框架,增强图形引擎、WebKit,版 本 4.5。 2009 年 11 月 1 日,支持动画、手势、多点触摸、Symbian、Windows 7、Mac OS X 10.6、Unix 系统扩展,增强整体性能, 版本 4.6。 2010 年 9 月 21 日,支持 Qml、QtQuick,版本 4.7。 2011 年 11 月 15 日,支持 QPA、多线程 HTTP 及 OpenGL,增强文件系统,版本 4.8。 Qt 5 2012 年 11 月 19 日,支持 Wayland(客户端包装),增强 4.x,版本 5.0。 2013 年 6 月 3 日,预览版 Andriod、ios,版本 5.1。 2013 年 11 月 12 日,Andriod、ios 第一个发行版,支持 KDE Framework 5,版本 5.2。 2014 年 5 月 20 日,专注于稳定性和易用性,版本 5.3。 2014 年 11 月 10 日,支持 WinRT、Windows Phone、基于 Chromium 内核的 WebEngine(将替换 WebKit)、Windows 上 动态切换 ANGLE(Almost Native Graphics Layer Engine)与 OpenGL、Android 平台用于 Qt Quick Controls 的本地 look and feel、 桥接 QObject 与 WebSockets 的 WebChannels,版本 5.4。 2015 年 6 月 1 日,支持 3D、Canvas 3D、Location、Bluetooth Low Energy、Windows 平台动态管理 ANGLE 与 OpenGL、 GStrmeamer 1.0、新的 Video 过滤框架、Linux 平台的 NFC,增强 IOS 平台的 QML Camera 与 MediaPlayer、Network SSL/TLS,弃 用 Webkit、Declarative、Script,版本 5.5。 2016 年 3 月 16 日,LTS 版,支持 Network HTTP 重定向、Multimedia QML playlist 类型、基于 Chromium 45 的 WebEngine、 基于 Intel Atom 的 NUCs 平台,增强 Core 性能、GUI OpenGL ES 3.1 和 3.2、QML 性能,弃用 Script、Enginio,移除 Webkit、Declarative, 版本 5.6。 2016 年 6 月 16 日,支持 3D 2、Quick Controls 2,开源 Charts、Data Visualization、Vritual Keyboard、Purchasing、Quick 2D Renderer,版本 5.7。 2017 年 1 月 23 日,支持用以节省二进制文件大小的 Lite 配置系统、Wayland Compositor、Serialbus、带有 TLS PSK 加密 套件的 Network 和 Web Sockets、Quick Controls 2 新的 QML 类型、WebEngine 打印网页、SCXML,增强 QMl 引擎(启动时间及 内存)、Quick 2D 渲染性能(场景图局部更新),版本 5.8。 2017 年 5 月 31 日,LTS 版,Qt Network 支持 HSTS(HTTP Strict Transport Security),Qt Web Sockets 可以使用外部的 TCP Sockets,Android 版的 NFC 功能改善,3D 引擎改善,QML 引擎的性能和内存改善,Qt Web 引擎使用 Chromium 56,Qt Gamepad 完成支持(不再是 Tech Preview 状态),Qt 3D 程序可以嵌入 Qt Quick 场景(3D 场景可以嵌入 2D UI 控件),版本 5.9。 附:个人有道云中收集了一些,也可以去里面看看,地址 http://note.youdao.com/noteshare?id=f2eaccf838727dbf6552fb6432f3ea2a
分享到:
收藏