C Qt试题
- 格式:doc
- 大小:25.50 KB
- 文档页数:6
一、选择题:(共10小题,每题3分)1.类的构造函数被自动调用执行的情况是在定义该类的( C)A)成员函数时B)数据成员时C)对象时D)友元函数时2.说明友元函数使用关键字( A )A)friendB)staticC)constD)colatile3.已知类X中的一个成员函数说明如下:Void Set(x &a); 其中,X&a的含义是(C)A)指向类X的指针为aB)将a的地址赋给变量SstC)a是类X的对象引用,用来做为Set()的形参D)变量X是a按位相与作为函数Set()的参数4.关于new运算符的下列描述中(?C )是错误的.A)?它可以用来动态创建对象和对象数组B)?使用它创建对象或对象数组,可以使用运算符DELETE删除C)?使用它创建对象时要调用构造函数D)?使用它调用对象数组时不E)?许指F)?定初始值5.允许访问类的所有对象的私有成员,公有成员和保护成员的是( A )A)友元函数B)成员函数C)内联函数D)重载函数6.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用(A )提供对全局变量的访问A)域运算符B)类运算符C)重载D)引用7.缺省析构函数的函数体是(C)A)不存在B)随机产生的C)空的D)无法确定的、8.通常拷贝构造函数的参数表是(C)B)某个对象的成员名C)某个对象的引用名D)某个对象的指针名9.对定义重载函数的下列要求中,(D)是错误的A)要求参数的个数不同????B)要求参数中至少有一个类型不同C)要求参数个数相同时,参数类型不同?D)要求函数的返回值不同10.对于多重继承,有(D)A.一个派生类只能有一个基类B.一个基类只能产生一个派生类C.一个基类必须产生多个派生类D.一个派生类可有多个基类二、简答题:(共8小题,总分:30)1.C和C++有什么不同?(3分)C是面向过程的语言,c++是面向对象的语言。
C源程序文件扩展名为.c , 而C++为.cpp。
C++可重用性、可扩充性、可维护性、可靠性要强些。
2.面向对象的三个基本特征及各自的作用(4分)封装性:对象将私有元素和实现操作的内部细节的结果隐藏起来,并能管理自己的内部状态。
作用:外部只能从对象所表示的具体概念、对象提供的服务和对象提供的外部接口来认识对象。
继承:类间具有共享特征,具有新增部分,具有层次结构。
作用:避免公用代码的重复开发,减少代码和数据冗余。
通过增强一致性来减少模块间的接口和界面。
多态性:类中具有相似功能的不同函数使用同一个名称来实现的现象。
实现了动态联编,使程序运行效率更高,更容易维护和操作。
3.c和c++中的struct有什么不同(4分)C 中定义结构体变量要加struct,而C++不用,如下例:struct STRING{char *prt;int length;}在C中:在C++中:struct STRING str; STRING str;4.const符号的作用有哪些(4分)Const修饰符定义常量。
(1)欲阻止一个变量被改变,可以使用const关键字。
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;5.引用与指针有什么区别(3分)引用就是给变量一个别名,使指针运算更加方便。
指针是一个实体,而引用仅是个别名;引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;引用不能为空,指针可以为空;引用是类型安全的,而指针不是(引用比指针多了类型检查)6.重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别(3分)1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖要求参数列表相同;重载要求参数列表不同。
3、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
7.static 在类内修饰成员的作用是什么,如何引用这些成员(4分)表明该成员是静态成员,有点类似于全局变量。
可以通过“类名::"和“对象名.”两种方法来访问。
8.虚析构函数的作用是什么(5分)在于使用delete运算符删除一个对象时,能确保析构函数被正确的执行。
三、编程题:(共3小题每小题6分)1.编写一个字符串处理的类,MyString,实现拷贝构造,‘=’号重载等基本函数。
#include <iostream>class MyString{char *str;public:MyString(char *s){str=new char [strlen(s)+1];strcpy(this->str,s);}MyString(const MyString &temp){str=new char[strlen(temp.str)+1];strcpy(str,temp.str);}~MyString(){delete str;}MyString & operator = (const MyString &temp){delete[] this->str;this->str=new char[strlen(temp.str)+1];if(this->str){strcpy(this->str,temp.str);}return *this;}};2.使用MyString作为成员对象实现一个Person类,包含:姓名,年龄。
#include <iostream>class Mystring{private:char *name;public:Mystring(char *s){name=new char [strlen(s)+1];strcpy(this->name,s);}~Mystring(){delete name;}};class Person{private:int age;Mystring per_name;public:Person(int per_age,char *ps_name):per_name(ps_name){this->age=per_age;}~Person(){}};3.实现一个Student 类:有姓名,年龄,学号,老师姓名。
#include <iostream>class Student{private:char *student_name;int age;int student_num;char *teacher_name;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;}};(答案写到背面,即可)QT部分:一、简答题:1.什么是QtQt能做什么有哪些优点(5分)Qt是Trolltech公司的一个产品,是多平台的C++图形用户界面应用程序框架。
Qt能做很多应用软件,如:KDE桌面环境,Goole地图,eva等。
Qt的优点:1.优良的跨平台特性,一劳永逸。
2.面向对象。
3.丰富的API。
4.信号与槽的消息机制。
5.编程语言:C++以及java。
6.支持2D/3D图形渲染,支持OpenGL7.XML支持8.国际化,多语言的支持9.强大的工具,提高了开发的效率和质量。
10.帮助文档assistant11.4.5之后遵循LGPL协议,个人应用完全免费2.Qt 中窗口对象的父子关系如何指定指定父对象有什么作用及好处(5分)一般通过构造函数中的“QWidget *parent”参数指定重要作用:父对象show的时候会递归调用其所有子对象,让它们都显示出来。
父对象被销毁时会递归销毁其所有的子对象,让内存管理更加简单。
3.Qt 中信号和槽的作用是什么,如何使用(6分)对象之间通信的高级接口。
可以自定义槽函数用connect函数来连接信号或着使用designer设计器来设计。
通过触发信号来执行槽函数。
4.Qt 中事件是通过什么实现的有什么注意点(6分)通过虚函数的机制使得我们可以让事件在处理时调用到自定义的事件处理函数。
重新实现这些事件函数。
实现函数要遵循虚函数的语法规则,自定义类中保住函数名、参数一致性。