关于类成员的访问控制权限
C++ 第3章类和构造函数

1、类定义的一般形式如下: class Name { public:
类的公有函数
private: 私有的成员函数
私有的数据成员定义
}; <各个成员函数的实现> 注意:类的定义也是一个语句,所以要有分号结尾,否则,会产生难以理解的编 译错误。 2、类中的成员: 1. 数据成员,类的数据。 2. 成员函数,类的操作。
25
成员初始化表
class Image { public: Image(const int w, const int h); private: const int width; const int height; //... }; Image::Image (const int w, const int h) : width(w), height(h) { }
21
再讲访问权限
类成员有三种不同的访问权限: 1. 公有(public)成员可以被程序中任何代码访问。 2. 私有(private)成员只能被该类的成员函数及友元类的成员函数访问, 其它类及其子类的成员函数都不能访问。 3. 保护(protected)成员只能被该类的成员函数和说明为友元类的成员 函数访问,或子类的成员函数访问。 注意: 1.如果未指定类成员的访问权限,默认访问权限是私有的 2.数据成员和成员函数出现的顺序也没有关联
Java开发工程师招聘笔试题及解答2024年

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程序必须捕获并处理所有抛出的异常。
c++练习题(带答案)

一、选择题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)。
(完整版)c++面向对象程序设计试题和答案

系名___ ___ ___ ___班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密封线内不答题填空题(每空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面试题及答案(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++选择题

B. 友元函数可直接访问类中的私有成员
C. 友元函数破坏封装性,使用时尽量少用
D. 友元类中的所有成员函数都是友元函数
21.下列对派生类的描述中,错误的是( )
A.一个派生类可以作为另一个派生类的基类。
B.派生类至少有一个基类。
C.派生类的成员除了它自己的成员之外,还包含了它的
基类的成员。
D.派生类中继承的基类成员的访问权限到派生类保持不变。
A.构造函数 B.析构函数
C.友元函数 D.拷贝构造函数
3.作用域运算符::的功能是( )。
A.标识作用域的级别
B.指出作用域的范围
C.给定作用域的大小
D.标识某个成员是属于哪个类的
4.不属于构造函数特征的是( )。
A.构造函数的函数名与类名同名
B.构造函数可以重载
C.构造函数可以设置缺省(默认)参数
49 下面四个 MFC 类中哪一个是管理 MFC 应用程序的
( )。
A)CWinApp
B)CMainFrame
C)CDocument D)CView
50 下列类中不属于 MFC 框架基本类的是( )。
A)CWinApp B)CFrameWnd
C)CView
D)CObject
1.视图类中支持绘图的成员函数是( )。
A.析构函数有且只有一个
B.析构函数无任何类型
C.析构函数与构造函数一样可以有形参
D.析构函数的作用是在对象生命周期结束时收回先前
分配的内存单元
10.有关类的说法中不正确的是( )
A.类是一种用户自定义的数据类型
B.只有类中的成员函数或类的友元函数才能存取类中
的私有数据 .
C.在类中,如果不作特别说明,所有的成员均为私有
C++程序设计19秋在线作业2 假定指针变量p定义 int p new int 100 要释放p所指向的动态内存 应使用语句

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考试考试试题

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;;;}。