关于类成员的访问控制权限
- 格式:pptx
- 大小:245.83 KB
- 文档页数:12
2024年招聘Java开发工程师笔试题及解答(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、以下哪个不是Java中的基本数据类型?A、intB、floatC、StringD、boolean2、在Java中,以下哪个关键字用于声明一个类?A、classB、structC、enumD、interface3、关于Java中的String类,以下描述正确的是:A. String类是final类,无法继承。
B. String类是可变的,可以对其进行修改。
C. String类是可变的,每次对String对象的操作都会创建新的对象。
D. String类是不可变的,每次对String对象的操作都会创建新的对象。
4、关于Java中的垃圾回收机制,以下描述不正确的是:A. 垃圾回收器可以自动回收不再使用的对象占用的内存空间。
B. 垃圾回收机制是Java自动管理内存的一种方式,程序员无需手动释放内存。
C. 垃圾回收器会定期检查并回收那些不再有引用的对象。
D. 堆内存中的所有对象在不再有引用后,会自动关联到垃圾回收机制中,即成为垃圾,等待垃圾回收器来回收。
5、以下哪个Java版本正式支持模块化系统“Java Platform Module System”(JPMS)?A、Java 8B、Java 9C、Java 10D、Java 116、在Java中,以下哪个关键字用来声明一个线程?A、threadB、runC、ThreadD、start7、以下哪个关键字是Java中用于实现多线程的同步机制?A. synchronizedB. transientC. volatileD. static8、以下哪个选项不是Java中的访问修饰符?A. privateB. publicC. protectedD. friendly9、在Java中,以下哪个选项不是访问修饰符?A. publicB. privateC. protectedD. friend 10、下列关于Java异常处理的说法中,哪一个是正确的?A. Java程序必须捕获并处理所有抛出的异常。
一、选择题1.C++语言属于( C )。
A)自然语言 B)机器语言 C)面向对象语言 D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。
A)继承性 B)多态性 C)相似性 D)封装性3.可用作C++语言用户标识符的一组标识符是( B )。
A) void define +WORD B) a3_b3 _123 YNC) for -abc Case D) 2a DO sizeof4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A) 0 B) 4 C) 8 D) 65.下列情况中,哪一种情况不会调用拷贝构造函数( B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6.以下哪一关键字可用于重载函数的区分(C)A)extern B)static C)const D)virtual7.下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名[下标表达式];8.下列有关继承和派生的叙述中,正确的是( C )A)派生类不能访问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9.实现运行时多态的机制是( A )A)虚函数B)重载函数C)静态函数D)模版函数10.若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是( A)A)3 B)4 C)5 D)611.下列关于this指针的说法正确的是( B)A)this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C)this指针是指向虚函数表的指针D)this指针是指向类的函数成员的指针12.在下列关于C++函数的叙述中,正确的是(C)A)每个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己13.下列运算符中,不能重载的是(C)A)&& B)!= C). D)->14.下面程序的输出结果是(B)#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)1615.下面的程序段的运行结果为(D)char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’16.下面程序的输出结果是( C )#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; } private :int x ;};void main(){B b(2);b.dispb();}A)10,2 B)12,10 C)12,2 D)2,217.下面程序的输出结果是( C)#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; }~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A)134122 B)123412 C)14302012 D)14321218.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:virtual void f() { cout << “f0+”; }void g() { cout << “g0+”; }};class Derived : public Base{public:void f() { cout << “f+”; }void g() { cout << “g+”; }};void main() { Derived d; Base *p = &d; p->f(); p->g(); }A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+19.下面程序的输出结果是( C )#include <iostream>using namespace std;class Sample{friend long fun (Sample s){if (s.x < 2) return 1;return s.x * fun(Sample(s.x-1));}public:Sample (long a) { x = a; }private:long x;};void main(){int sum = 0;for (int i=0; i<4; i++){sum += fun(Sample(i));}cout << sum;}A)12 B)16 C)10 D)34 20.以下程序的输出结果是:(D)#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 3 21.有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.522.下列关于虚基类的描述中,错误的是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明 class B:virtual public A 说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23.有下类定义Class A {Char *a;Public:A():a(0){}A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间A=___________________;Strcpy(a,aa);~A() {delete [] a;}};正确的选择是(A)A. new char[strlen(aa)+1]B. char[strlen(aa)+1]C. char[strlen(aa)]D. new char[sizeof(aa)-1]24.假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X)。
系名___ ___ ___ ___班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密封线内不答题填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;_P1.show()______________//通过对象p1访问show函数__p->show()____________//通过指针p访问show函数}2、在C++类中可以包含__私有____________、___公有___________和__保护____________三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字___class__________来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_____抽象类___________。
5、C++类的组成包括数据成员和___成员函数___________,友元_不是____(是、不是)该类的成员函数。
6、友员函数是用关键字____friend________修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=__11________,j=_11_________。
8、 new的功能是_____动态申请内存空间_______________,delete的功能是___释放由new申请的空间_________________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是()。
(A)数据封装(B)继承(C)多态性(D)模板2、()是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
一、PHP基础1. 请简述PHP的魔术方法及其用途。
答:PHP的魔术方法是一组具有特殊名称的方法,当对象被创建、销毁、访问属性或调用方法时,PHP会自动调用这些方法。
常用的魔术方法包括:- __construct():构造函数,在对象创建时自动调用。
- __destruct():析构函数,在对象销毁时自动调用。
- __get():获取私有属性时自动调用。
- __set():设置私有属性时自动调用。
- __isset():检测私有属性是否设置时自动调用。
- __unset():销毁私有属性时自动调用。
- __call():调用不存在的方法时自动调用。
2. 请解释PHP中的单引号和双引号的区别,哪个速度更快?为什么?答:单引号和双引号在PHP中用于字符串连接,但它们在处理字符串内容时有所不同。
- 单引号:不会解析字符串中的变量和转义字符,速度快。
- 双引号:会解析字符串中的变量和转义字符,速度慢。
通常情况下,单引号比双引号快,因为单引号不会进行变量替换和转义字符解析。
3. 请解释PHP中的isset()和empty()函数的区别。
答:isset()和empty()都是用于检测变量是否已设置,但它们在检测方式上有所不同。
- isset():检测变量是否已设置且不为NULL。
- empty():检测变量是否为空,包括NULL、空字符串、空数组、0等。
例如:<?php$a = 0;$b = '';if (isset($a)) {echo '变量a已设置';} else {echo '变量a未设置';}if (empty($b)) {echo '变量b为空';} else {echo '变量b不为空';}>```4. 请解释PHP中的堆栈区别。
答:堆栈是PHP中用于存储变量、对象等的数据结构。
- 堆:动态分配内存,用于存储对象。
C++程序设计19秋在线作业21 单选题1 假定指针变量p定义“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句()。
CA delete *p;B delete &p;C delete p;D delete []p;2 下面关于运算符重载的描述错误的是()。
CA 重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B 不是所有的运算符都可以进行重载C 运算符函数的调用必须使用关键字operatorD 在C++语言中不可通过运算符重载创造出新的运算符3 类中定义的成员默认为()访问属性。
BA publicB privateC protectedD friend4 下列选项中,()是istream类的对象。
AA cinB coutC cerrD clog5 析构函数是一种特殊的成员函数,显式定义时其访问属性应被定义为()。
AA publicB privateC protectedD static6 关于函数模板,描述错误的是()。
AA 函数模板必须由程序员实例化B 函数模板的实例化由编译器实现C 一个类定义中,只要有一个函数模板,则这个类是类模板D 若类模板的成员函数是函数模板,则类模板实例化后,成员函数也随之实例化7 下列关于运算符重载的描述中,正确的是()。
DA 可以改变运算符的目数B 可以改变运算符的优先级C 可以改变运算符的结合性D 可以改变运算符的功能8 面向对象程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。
AA 对数据的操作B 信息C 数据隐藏D 数据抽象9 在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是()。
BA int Fun(int x){return x*x;}B inline int Fun(int x){return x*x;}C int inline Fun(int x){return x*x;}D int Fun(int x){inline return x*x;}10 定义类模板时要使用关键字()。
VC++复习题选择题1. 下列关键字中哪一个不是用于类的访问控制的BA.public B. friend C. private D. protected2. 以下四个特性中哪一个不属于面向对象的三大特性CA.封装性 B. 多态性 C. 抽象性 D. 继承性3.管理MFC应用程序AA. CWinAPPB. CmainFrameC. CDoucumentD. CView4. 关于构造函数,下列说法不正确的是AA. 一个类中有且仅有一个构造函数B. 构造函数在说明类变量时被自动执行C. 构造函数没有返回值类型D. 类中的构造函数的函数名与该类的类名必须同名5.关于析构函数,下列说法不正确的是CA. 类中有且仅有一个析构函数B. 析构函数可以没有形参C. 析构函数没有返回值类型D. 析构函数在对象消失时被自动执行6. 下列类中不属于MFC框架基本类的时DA. CWinAppB. CFrameWndC. CViewD. CObject7. 下列选项中哪一个不是命令消息的产生途径CA. 选择菜单B. 单击工具栏C. 点击对话框的按钮D. 程序产生命令8. 下列关于构造函数的描述中,错误的是DA. 构造函数可以设置默认参数B. 构造函数在定义类对象时自动执行C. 默认构造函数可以没有D. 构造函数不可以重载9. 当在使用类模板时,类模板本身被实例化成了一个具体的DA. 对象B. 实例C. 模板类D. 类10. 以下四个关于类的访问控制的描述哪一个是错误的DA. 子类不能访问其父类的私有数据成员和成员函数B. 子类的对象不能访问其父类的保护数据成员或者成员函数C. 类的对象不能访问类保护数据成员或者成员函数D. 类的成员函数不能访问类中的私有数据11.下面有关重载函数中说法正确的CA. 重载函数必须有不同的返回值类型B. 重载函数形参个数必须不同C. 重载函数必须有不同的形参列表D. 重载函数名可以不同12.一个视图对象能连接文档对象,一个文档对象能连接D视图对象;A. 多个,多个B. 多个,一个C. 一个,一个D. 一个,多个13.所有的控件都是B类的派生类,都可以作为一个特殊窗口来处理;A. CviewB. CWndC. CWindowD. Cdialog14、通过调用B函数,能够设置本地计算机的时间A. SetSystemtime···B. SetLocalTime···C. SetSystemTime···D. SetLocalime···15.关于类,下列说法不正确的是DA. 在类中,成员的默认访问特性是私有的B. 类实现了数据的封装C. 类实质上是一种数据类型D. 在类的定义中,必须包含private、public、protected三种访问方式对应的部分16.关于对象,下面说法不正确的是CA. 对象是类的一个实例B. 任何一个对象只是属于一个类C. 一个类只能有一个对象D. 类与对象间的关系和数据类型与变量间的关系类似17.关于类的继承,下列说法不正确的AA. 派生类中继承的基类成员的访问权限到派生类中保持不变B. 派生类的成员除了它自己的成员外,还包含了它的基类成员C. 派生类至少有一个基类D. 派生类是基类定义的延续18.关于虚函数,下列说法正确的时BA. 包含虚函数的类不能够生成实例B. 包含虚函数的类称为抽象类C. 虚函数在基类中说明后,不用再在派生类中重新说明D. 每个派生类必须对从基类继承的虚函数进行重新定义19.友元的作用是DA. 增加成员函数的种类B. 增强类的封装性C. 实现数据的隐藏性D. 提高程序的运行效率20、关于函数重载,下列说法不正确的是CA. 构造函数重载将会给对象的初始化带来多种方式B. 不要使用重载函数来描述不相干的函数C. 重载函数中不允许使用默认参数D. 重载函数在编译时是根据参数表来进行选择的21.关于动态联编,下列说法不正确的是BA. 动态联编是虚函数为基础的B. 动态联编实在编译时确定所调用的函数代码C. 动态联编是在运行时确定所调用的函数代码D. 动态联编调用函数的操作是通过指向对象的指针或对象的引用完成的22.下列输出字符‘&’的方法中,不正确的是CA. cout<<'&'B. cout<<put'&'C. '&'D. Char c='&';cout<<c23.下面描述中表达错误的BA.公有继承时基类中的public成员在派生类中仍时publicB.公有继承时基类中的private成员在派生类中仍时privateC. 公有继承时基类中的protected成员在派生类中仍时protectedD. 私有继承时基类中的public成员在派生类中是private24.一下时关于鼠标的消息类型,表示按下鼠标左键的时BA. WM_MBUTTONDOWNB. WM_LBUTTONDOWNC. WM_LBUTTONBLCLKD. WM_MBUTTONBLCLK25.设置虚基类的目的是BA. 简化程序B. 消除二义性C. 提高运行效率D. 减少目标代码26、关键字C说明对象或变量初始化后不会被修改A. staticB. publicC. constD. inline27.内联函数执行起来比标准函数BA. 更慢B. 更快C. 次数更多D. 以上都不是28. 通常的拷贝构造函数的参数是CA. 某个对象名B. 某个对象成员名C. 某个对象的引用D. 某个对象的指针名29.对于动态分配内存空间描述正确的DA. 使用new运算符分配的内存空间的长度必须是常量B. delete运算符可以释放动态的存储空间和静态的存储空间C. 由new分配的内存空间是不连续的D. delete运算符只能释放由new分配的动态存储空间30.下列关于成员函数的描述中,不正确的是BA. 成员函数可以重载B. 成员函数一定是内联函数C. 成员函数可以时静态的D. 成员函数可以设置参数的默认值31.下列关于this指针描述中,正确的是BA. 任何与类相关的函数都友this指针B. 类的成员函数都有this指针C. 类的友元函数都有this指针D. 类的非静态成员函数才有this指针32、下列关于构造函数的描述中,不正确的是CA. 构造函数的函数名与类名相同B. 构造函数可以重载C. 构造函数必须制定函数类型D. 构造函数可以设置参数的默认值33.在保护继承中,基类的私有成员变成派生类的AA. 不可访问成员B. 私有成员C. 保护成员D. 共有成员34.下列重载为友元函数的运算符函数原型中,不正确的是CA. X operator+X,X;B. X operator -X;C. X& operator=X&,X;D. X& operator +=X&,X;35.运行时的多态性指BA. 用指向对象的基类指针或引用一个纯虚函数B. 用指向对象的基类指针或引用一个虚函数C. 以任何方式调用一个纯虚函数D. 以任何方式调用一个虚函数36.下列关于虚函数的描述中,正确的是BA. 从虚基类继承的函数都是虚函数B. 虚函数不得是静态成员函数C. 只能通过指针或引用调用虚函数D. 抽象类中的成员函数都是虚函数37.在重载一个运算符时,其函数的参数列表中没有任何参数,这说明该运算符是AA. 一元成员运算符B. 二元成员运算符C. 一元友元运算符D. 二元友元运算符38、在下列函数原型中,可以作为类A构造函数的是DA. void AintB. int AC. AintconstD. Aint39.有int a=10;int &b=a;a=20;b=10;则cout<<b<<”,”<<a;的输出结果是DA. 10,20B. 20,20C. 20,10D. 10,1040.假设一个对象数组为aN,当释放该数组时,系统自动调用该对象所属类的析构函数次数是CA. 1次B. N-1次C. N次D.不确定41.对于AB类,基于拷贝构造函数的原型DA. AB::AB;B. AB::ABAB;C. AB::ABAB &;D. AB::ABconst AB&;42.关于内联函数不正确的说法是DA. 内联函数定义时加关键字inlineB. 可消除宏定义的不安全性C. 增加了代码长度D. 降低了运行速度43.对于静态数据成员,其初始化一般定义在CA. main函数中B. 类声明中C. main函数之前类声明之后D. 类声明之前,main函数之后44、以下运算中即可以重载为类的成员函数,又可以重载为类的友元的是DA. =B.C.D. ++填空题1.使用VC++的AppWizard创建的典型SDI应用程序的4个MFC基类是:应用程序类、文档类、视图类、框架窗口类2.使用MFC APPwizard产生的应用程序的类型主要包括单文档、多文档和基于对话框的文档 ;3、库模块分为静态链接库和动态链接库两类;4. 面向对象的三大特性是__封装性____, 继承性和多态性5.在进行绘图时, 画刷用于指定图形的填充样式, 画笔用于指定图形的边框样式;6. 文档序列化主要分为两个部分,它们是读文件和写文件 ;7.含有纯虚函数的类称为抽象类 ;8、消息和事件是Windows程序设计的核心概念;9. 类的访问权限有公有 , 保护和私有 3种;10.类实现了面向对象程序设计的封装特性;11.一个类和对象的关系,正如基本数据类型与该类型的变量一样,如int x;12. 当在类的外部定义成员函数时,必须在函数名前加上_ 类名和作用域运算符::13. 构造函数是在对象被创建是自动执行,对象消失时自动执行的成员函数析构函数;++提供的多继承机制允许一个派生类继承多个基类,即使这些基类是相互无关的15.友元可以是函数 ,也可以是其他的类函数 ;16. 设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式来求这两个变量的和;显然运算符“+”具有不同的用途,这是运算符重载的例子17.对话框主要由对话框资源和对话框类组成,对话框可分成模式和无模式2种类型;18.标准控件为静态控件、编辑框、按钮、列表框、组合框和滚动条六种;19.在C++中,函数的参数类型有2种传递方式,它们是值传递和地址/指针/引用传值 ;20. 当一个成员函数被调用时,该成员函数的this指针指向调用它的对象;21、拷贝构造函数使用引用作为参数初始化创建的同类中的对象;23.在派生类中不能访问基类的私有成员,这符合面向对象程序设计的封装思想; 24.使用String类之前,需要包含String头文件;25.若有char a80;则cin>>a表示从键盘上读入一个字符串到数组a中;26.若希望用一个已有对象来构造另一个同类型的对象,可以使用拷贝构造函数来实现;27.重载运算符的含义必须清楚,不能有二义性 ;++的I/O是以字符流的形式实现的,每个C++编译系统都带有一个面向对象的输入/输出软件包,这就是 I/O流类库 .简答题1.一个windows下的应用程序具有哪些特点答:消息驱动机制;图形设备接口GDI;基于资源的程序设计;动态链接库;进程和线程;2.什么是消息映射消息映射与消息处理函数间的关系是什么答:消息映射就是将消息或命令发送到程序员为处理消息所编写的函数中,使其对消息进行处理;消息处理函数指的是与某个消息对应的函数;消息处理函数的执行是由其对应的消息引发的,某个类对象中的消息处理函数是与这个类对象能够得到的一个消息对应的,当这个消息发生时,这个函数就会被执行;程序的入口点是什么函数它主要完成什么功能答:入口点是WinMain函数;完成的功能是创建、注册和显示窗口等一些初始化工作,启动消息循环完成消息驱动;4.什么是文档什么是视图答:文档:能够交流的,便于理解的结构化、规范化的信息;或:描述软件开发过程和使用方法的信息视图:一个视图是一个没有边框的窗口,它在文档和用户之间起中介作用,只负责实现和修改文档数据,不负责存储;5.简述文档类与视图类的相互关系;答:每一个文档可以有多个视图,但每个视图只能对应一个确定的文档;6.文档类在文档视图结构中主要完成哪些任务答:文档的任务是对数据进行管理和维护,在VC++中,文档类通过一个成为串行化Serialize的过程将数据保存到磁盘文件或数据库中,另外,它还可以处理命令消息;7.模式对话框和无模式对话框的区别P175答:模式对话框是指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在的应用程序的其他操作不能继续执行;无模式对话框是指当对话框被弹出后,一直保留在屏幕上,用户可继续在对话框所在的应用程序中进行其他操作;当需要使用对话框时,只需像激活一般窗口一样单击对话框所在的区域即可激活;8.什么是消息Windows应用程序有哪几种消息各自有什么特点P157答:消息用于描述某个事件发生的信息;有以下三种消息及特点:错误!窗口消息Windows message,主要指由WM开头的消息WM_COMMAND除外,一般由窗口类和视图类对象来处理;错误!控件的通知消息Control notifications,当控件状态发生改变例如用户在控件中进行输入时,控件就会向其父窗口发送WM_COMMAND通知消息;错误!命令消息Command message,主要包括由用户交互对象菜单、工具条的按钮、快捷键等发送的WM_COMMAND通知消息;9.文档模板的作用如何创建一个单文档模板P250P251答:用MFC AppWizard创建的单文档SDI和多文档MDI应用程序均应包含应用程序类、文档类、视图类和框架窗口类,这些类是通过文档模板有机的联系在一起的;新建文档模板:pDocTemplate=new CMultiDocTemplateIDR_EX_MDITYPE, 么叫文档序列化P256答:将文档类中的数据成员变量的值保存在磁盘文件中,或者将存储的文档文件中的数据读取到相应的成员变量中,这个过程称为文档序列化Serialize;11.什么是设备坐标什么是逻辑坐标设备坐标系中有哪几种坐标系设备坐标系:是面向打印机或显示器等物理设备的坐标,以像素点或设备所能表示的最小长度为单位:X轴的正方向从左到右,Y轴的正方向从上到下;逻辑坐标系:是面向设备环境的坐标系,这种坐标不考虑具体的设备类型,而在实际绘图时,windows会根据当前设置的映射模式,将逻辑坐标系转换为设备坐标;设备坐标系中有:屏幕坐标系、窗口坐标系和客户区坐标系3种;程序阅读题:1.for循环语句;void funint &; void main{ forint i=0;i<10;i++{ funi;Cout<<i<<””}Cout<<endl;}void funint &n{n++;}2.看程序写结果1:include<>class A{public:Aint i,int j{a=i;b=j;}void moveint x,int y{a+=x;b+=y;}voidshow{cout<<””<<a<<”,”<<b<<””<<endl;} private:int a,b;};class B:private A{public:Bint i;int j;int k;int l:Ai,j{x=k;y=l;}voidshow{cout<<x<<”,”<<y<<endl;}void fun{move3,6;}void f1{A::show;}private:int x,y;};void main{ A e1,2;;B d5,6,7,8;;;;}输出结果为:1,27,88,123. 看程序写结果2:include<>class A{ int a,b;public:Aint x,int y{a=x;b=y;}virtul void disp{ cout<<“A”<<endl;cout<<a<<””<<b<<endl;}};class B:public A{ int c;public:Bint xint y,int z:Ax,y{c=z;} void disp{ cout<<”B”<<endl; cout<<”c=”<<c<<endl;}};void main{ A obj160,60,p;B obj220,30,40;P=&obj1;p->disp;p=&obj2;p->disp;}输出结果为:A60,60BC=404.看程序写结果3:include<>class A{ int a;public:Aint aa=0{a=aa;}~A{cout<<”DestructorA”<<a<<endl;}};class B{ int b;public:Bint aa=0;int bb=0:Aaa{b=bb;}~B{cout<<”DestructorB”<<b<<endl;}};void main{ B x6,y7,8; 程序写结果4:include<>class A{public:A;Aint i,int j;~A{cout<<”Donstructor.\n”;}void print;ptivate:int a,b;};A::A{a=b=10; Cout<<”Defaultconstructor:\n;”}A::Aint i,int j{a=i;b=j;cout<<”Constructor.\n”;}void A::print{cout<<”a=”<<a<<”,b=”<<b<<en dl;}void main{A m,n15,18;;;}。
C++程序设计题目山东2015年10月高等教育自学考试C++程序设计试题请考生按规定用笔将所有试题的答案涂、写在答题纸上。
选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。
2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。
如需改动,用橡皮擦干净后,再选涂其他答案标号。
不能答在试题卷上。
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。
错涂、多涂或未涂均无分。
1.下列关于类的权限描述错误的是A.类本身的成员函数可以访问自身的任何成员B.类的对象只能访问公有成员C.普通函数可以不通过对象直接访问类的公有成员D.一个类可以包含另一个类的对象作为成员2.只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于A.privateB.protectedC.publicD.publish3.面向对象中的“对象”是指A.行为抽象B.数据抽象C.行为抽象和数据抽象的统一D.行为抽象和数据抽象的对立4.在类外定义成员函数时,::运算符两侧分别连接A.返回值类型函数名B.返回值类型类名C.函数名类名D.类名函数名5.设函数int& index(int * a,int i)返回数组a中下标为i的元素,如存在整型数组int Array []={1,2,3},在执行index(Array,2)+ +后,Array中各元素值为A.{0,1,2}B.{l,1,2}C.{1,2,4}D.{0,2,3}6.类构造函数定义的位置是A.类体内或体外B.只是在类体内C.只在类体外D.在类的成员函数中7.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a 中寻找值Value的位置A.reverse(a,a+Len,Value);B.sort(a,a+Len,Value);C.find(a,a+Len,Value);D.copy(a,a+Len,Value);8.关于对象的性质,下列描述错误的是:A.同一类对象间可相互赋值B.可以使用对象数组C.对象不可以用作函数参数D.一个对象可以用作另一个类的成员9.声明一个没有初始化参数的对象,需调用A.指定参数构造函数B.拷贝构造函数C.初始化函数D.默认构造函数10.下列运算符不能重载的是A.!B.sizeofC.newD.delete11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是A.PB.*PC.&PD.P+112.使用下列流格式控制符能输出一个换行符的是A.decB.octC.hexD.endl13.下列表达式,能将P声明为常量指针的是A.const int * P;B.int*const P;C.const int * const PD.int * P14.C++程序文件扩展名为A..cppB..hC..libD..obj15.对C++中主函数描述正确的是A.名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个16.假定有char * P="Hello";,要输出这个字符串的地址值的正确写法是A.cout<< *PB.cout<<p< bdsfid="146" p=""></p<>C.cout<<&PD.cout<<(void *)P17.下列描述错误的是A.在没创建对象前,静态成员不存在B.静态成员是类的成员,不是对象成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员18.对于友元描述正确的是A.友元是本类的成员函数B.友元不是本类的成员函数C.友元不是函数D.以上皆不正确19.一个函数功能不太复杂,但要求频繁使用,则该函数适合作为A.内联函数B.重载函数C.递归函数D.嵌套函数20.下列默认参数的声明不正确的是A.int max(int a,int b,int c,int d=0);B.int max(int a,int b,int c=0,int d=0);C.int max(int a=0,int b,int c=0,int d=0);D.int max(int a,int b=0,int c=0,int d=0);非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
描述 private、protected、internal和public修饰符的理解访问权限存在的意义,各种访问权限的作用,在代码中灵活应用访问权限。
【出现频率】★★★☆☆【解答】1.private修饰private修饰符用于设置类或类成员的访问权限仅为所属类的内部,private也被称为私有修饰符。
某些时候需要访问私有类成员时,可通过get和set访问器读取或修改。
本例通过对类的私有成员及私有类的访问,展示private修饰符的保护作用。
在D:\web\NET\目录下新建一个程序文件,并命名为ModPrivate.cs,编写代码如代码4.3所示。
代码4.3 private修饰符示例:ModPrivate.csusing System;class ModPrivate{static void Main(String[] args){Dog dg = new Dog("可卡");Console.WriteLine("一只小狗创建成功!");Console.WriteLine("这只"+ + "的品种是:" + dg.type);//由于参数类型为字符串的构造函数是私有的,这里不能直接创建实例对象//Tiger tg = new Tiger("华南虎");//由于Tiger类所嵌套的ZooTiger类是私有类,所以无法直接访问//Tiger.ZooTiger tz = new Tiger.ZooTiger();Tiger tg = new Tiger(true); //参数类型为布尔型的构造函数可创建Tiger类的对象 Console.WriteLine("\n一只老虎创建成功!");Console.WriteLine("这只" + + "的品种是华南虎吗?" + tg.ischinatiger);}}class Dog //狗类名称{internal string name = "小狗";private string _type; //品种internal Dog(string tp) //构造函数,直接给品种赋值{this._type = tp;}internal string type //type变量,get访问器获取私有成员_type的值{get { return this._type; }}}class Tiger //虎类名称{internal string name = "老虎";private string _type; //品种private bool _ischinatiger; //是否为华南虎private Tiger(string tp) //构造函数,直接给品种赋值{this._type = tp;}internal Tiger(bool chinatiger) //构造函数,直接给_ischinatiger赋布尔型值{this._ischinatiger = chinatiger;}internal string ischinatiger //ischinatiger变量,get访问器获取返回值{get{//由于同属于Tiger类的内部,所以可创建ZooTiger私有类的对象ZooTiger zt = new ZooTiger();//返回字符串,内容为私有成员_ischinatiger的值和ZooTiger的对象的name值return this._ischinatiger + "(" + + ")";}}private class ZooTiger{internal string name;internal ZooTiger(){ = "动物园的老虎";}}}2.protected修饰符protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部。
试卷题型:1)选择题15题,共30分2)填空题15题,共30分3)程序阅读题3题,共15分4)简答题3题,共15分5)编程题1题,共10分一、选择题:1)C++源程序文件的扩展名为( A )。
A.CPP B.C C.DLL D.EXE2)下列C++标点符号中表示行注释开始的是( C )。
A.# B.; C.//D.}3)在C++中,使用流进行输入输出,其中用于屏幕输入(A)A. cinB. cerrC. coutD. clog4)每个C++程序都必须由且仅有一个( B )。
A.预处理命令B.主函数C.函数D.语句5)已知:int k=1000;下列表示引用的方法中,( B )是正确的。
A.char &y; B.int &x=k; C.int &z=1000; D.float &t=&k;6)( B )是给对象取了一个别名,他引入了对象的同义词。
A.指针B.引用C.枚举D.结构7)一个函数功能不太复杂应选用( A )。
A.内联函数B.重载函数C.递归函数D.嵌套函数8)考虑函数原型void test(int a,int b=7,char c=’*’),下面的函数调用中,属于不合法调用的是( C )。
A.test(5); B.test(5,8); C.test(6,"#") D.test(0,0,’*’);9)适宜采用inline定义函数情况是(C)A. 函数体含有循环语句B. 函数体含有递归语句C. 函数代码少、频繁调用D. 函数代码多、不常调用10)在C++中,关于下列设置参数默认值的描述中,正确的是( C )。
A.不允许设置参数的默认值B.设置参数默认值只能在定义函数时设置C.设置参数默认值时,应该实现设置右边的再设置左边的D.设置参数默认值时,应该全部参数都设置11)有如下定义:const char * ptr; 则ptr 应该是( C )A.指向字符的指针B.指向字符的常量指针C.指向字符串常量的指针D.指向字符串的常量指针12)下面有关new和delete操作符的说法。
private的用法和搭配【最新版】目录1.介绍 private 的含义和用途2.讲述 private 的用法3.讨论 private 的搭配4.总结 private 的使用注意事项正文【private 的含义和用途】在编程语言中,private 是一个访问修饰符,用于限制类的成员变量或方法的访问权限。
它的主要用途是保护类的内部实现细节,防止外部直接访问和操作,从而实现数据和方法的封装。
【private 的用法】private 的用法非常简单,只需在成员变量或方法的前面添加private 关键字即可。
在 Python 等面向对象编程语言中,还可以使用双下划线(__)作为 private 的替代。
下面是一个使用 private 的示例:```pythonclass Person:private_name = "张三"def private_method(self):print("这是私有方法")p = Person()print(p.private_name) # 这里会报错,因为 private_name 是私有的p.private_method() # 这里也会报错,因为 private_method 是私有的```【private 的搭配】private 通常与访问修饰符 public 和 protected 一起使用,它们共同构成了访问控制机制。
下面是一些关于 private 的搭配示例:- public:公共的,可以被任何类或对象访问。
- protected:受保护的,可以被同一包中的其他类或子类访问。
- private:私有的,只能被本类中的方法访问,不能被其他类或对象访问。
这种搭配可以有效地控制类的成员变量和方法的访问范围,从而提高代码的安全性和可维护性。
【总结】在使用 private 时,需要注意以下几点:1.尽量将类的实现细节设为 private,以实现封装。
中南大学考试试卷学年学期时间分钟语言程序设计基础课程学时学分考试形式:闭卷专业年级:总分分,占总评成绩(=<);<<; }) ) ) ).下列选项,不正确的是()。
)( <);) ;{;}(<)) ;(<){;})( <);.下面关于数组的初始化正确的是()。
) []={‘',’','‘}) []={'','','’}<< (); }) ) ) ) .下列程序的运行结果为()。
<>( ){<<;}( ,){<<<<; }(){();<<” ”;();}) ) ) ).对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控)。
)派生类的对象可以初始化基类的引用)派生类的对象可以直接访问基类中的成员)派生类的对象的地址可以赋给指向基类的指针.下面程序的运行结果为()。
<>{:() {<<””;}~() {<<””;}}:{:() {<<””;}~() {<<””;}}(){。
;:( ) {;}(){ < < < <” ”;}() {< }(){();();();();}) ) ) )二、填空题(本题分,每空分). 在面向对象的程序设计中,类描述的是具有相似性质的一组。
. 在语言的结构化程序设计中,是程序的基本组成单元,在语言的面向对象设计框. <><>;{:() {<<'';}( ){<<;}(){<<'';} };(){,*;('');;;}. <>;{:() {<<"";} (){<<"";} };{:(){<<"";} (){<<"";} };(){* ;>();>();;}{;:()(){}() {<<;}; };{;:(){'';}(){<<;} };( ){();}(){ ,*;;(<())(**){ ; ; } (())("!");("!");}(){<<":";>>;<< () ;}. 下列程序的输出结果为请将程序补充完整。
面向对象部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共40道不定项选择题,其中单选30道,多选10道。
单选2分/题,多选4分/题。
多选题不全对半分,全对满分。
1.下面描述函数重写错误的是A. 要有子类继承或实现B. 子类方法的权限必须大于等于父类的权限C. 父类中被private权限修饰的方法可以被子类重写D. 子类重写接口中的抽象方法,子类的方法权限必须是public的//接口所有方法前面都是默认public abstract2.下面关于类的设计思路描述错误的是 ( )A. 根据需求定义类所包含的字段(成员变量)B. 根据面向对象的思想要求,隐藏属性和实现细节之后,可以提供公共的访问方式C. 封装之后的字段在本类内也必须使用get/set方法//private修饰之后可以在本类中直接使用,不需要通过get/set方法调用D. 按需求可以在类中定义若干构造方法3.分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在主函数应填入()。
class A {public void test() {System.out.println("A类的test()方法");}}class B extends A {public void test() {System.out.println("B类的test()方法");}public static void main(String args[]) {}}A. A a = new B();a.test();B. A a = new A();a.test();C. B b = new A();b.test();D. new B().test();4.关于封装下面介绍错误的是()。
Java语言程序设计第2版(郑莉)第二章习题答案1.什么是对象、类,它们之间的联系?答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。
对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。
现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。
2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。
2.什么是面向对象的程序设计方法?它有那些基本特征?答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。
它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。
它的特征:抽象,封装,继承,多态。
3(无用)4.请解释类属性、实例属性及其区别。
答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。
5.请解释类方法、实例属性及其区别。
答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。
类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。
区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法;6.类的访问控制符有哪几种?具体含义及其区别。
答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。
区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。
7类成员的访问控制符有哪几种?他们对类成员分别有哪些访问限制的作用?答:类成员的访问控制符有public,private,protecte及无修饰符.public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限).Private(保护的):类中限定为private的成员只能被这个类本身访问,在类外不可见。
类和对象(一)知识点:1.类与对象的概念,及两者的关系?面向对象程序设计以数据为中心来描述系统,按照数据来组织程序,其基本思想是数据决定对代码的访问。
面向对象程序设计将表示属性特征的数据和对数据进行操作的方法封装在一起,构成一个完整的对象。
对同类型对象抽象出共性,形成类。
类是具有相同属性特征和行为特征的一组对象的集合,它规定了这些对象的公共属性和行为方法类和对象之间的关系是抽象和具体的关系,类是对多个对象进行综合抽象的结果,对象是类的实例。
2.类定义的格式,对象定义的格式,访问对象的成员的格式C++中,类的定义一般包括说明部分和实现部分。
说明部分用来说明类的成员,包括数据成员的名字和数据类型、成员函数的原型或实现。
实现部分包括各成员函数的定义。
类定义的一般形式如下:class 类名{private:私有数据成员和成员函数的说明或实现public:公有数据成员和成员函数的说明或实现protected:保护数据成员和成员函数的说明或实现};//实现部分各成员函数的实现定义一个对象,与定义一个一般变量的格式相同。
定义对象的一般格式如下:类名对象名表;对象的使用实际上是对象中成员的使用。
对象成员是指该对象所属类中定义的成员,包括数据成员和成员函数,其访问形式与结构变量成员的访问形式相同。
通过一般对象访问对象成员的格式如下:对象名.数据成员名对象名.成员函数名(参数表)其中,运算符“.”称为成员选择运算符。
3.类中成员访问权限有哪几种,它们的特点?类定义中通过使用访问权限控制符对不同成员设置了不同的访问权限,类定义中设置的访问权限只影响该类的对象对成员的访问,不影响类内部对成员的访问。
无论成员是何种访问权限,在类的内部都可以自由访问和使用。
但在类的外部(程序中)通过对象只能访问对象的公有成员(包括公有成员函数和数据成员),不能访问对象的私有成员。
4.如何对对象进行初始化?5.构造函数与析构函数的特点,构造函数在哪些情况下被系统自动调用,析构函数什么情况下被调用;存在虚基类的派生类构造函数调用顺序?构造函数是类中特殊的成员函数,其功能是在创建对象时使用给定的值来初始化对象。
计算机二级(Java)53(总分4230,考试时间90分钟)选择题(每小题2分,共70分) 下列各题四个选项中,有一个是正确的,请选择正确答案。
1. 给出下列有关List的表达式,则哪个选项的叙述是对的? List 1 = new List(6,true);A. No 5 6 8B. 5 6 8 NoC. No 5 14D. 8 6 No 52. 在深度为7的满二叉树中,叶子结点的个数为【】A. 32B. 31C. 64D. 633. 关于多线程,下列哪个说法不正确?A. 100B. 0C. AD. 程序有错误4. 下列关于构造方法的说法中不正确的是()。
A. sleep( )B. yield( )C. interrupt( )D. stop( )5. 下列程序执行后,k的值是()。
public class Testddd{public static void main(String args[ ]){inti;10,j=18 K=30;switch(j-i){ case 8:k++;case 9:k+ =2;case 10:k+ =3;default:k/=j;} System.out.println(k);}}A. ababccB. 464688C. 46abc8D. 10abc86. 下列哪个方法用来定义线程的具体行为,也就是定义线程体?A. Java中的类可以有多个直接父类B. 抽象类不能有子类C. 最终类可以作为其他类的父类D. Java中接口支持多继承7. 下列的哪个选项可以正确用以表示八进制值8?A. SQL语句中允许在WHERE短语中为关系定义别名B. 为关系定义别名的格式为:<别名><关系名>C. 在关系的自联接操作中,别名是必不可少的D. 以上说法均正确8. 若a的值为3时,下列程序段被执行后,c的值是()。
int c = 1;if (a>0) if (a>3) c = 2;else c = 3;else c = 4;A. 0B. 1C. 2D. 39. 为了使模块尽可能独立,要求【】A. 模块的内聚程序要尽量高,且各模块间的耦合程度要尽量强B. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强10. 下列程序段执行后的输出结果为()。