静态链接库的使用
在E盘建一个文件夹名字是app3,在app3文件夹内建立2个文本文档,文本文档重命名为mylib.cxx、makefile然后保存,makefile的内容是:
all:mylib.o
g++ mylib.o -o mylib.exe
tt.o:tt.cxx
g++ -c mylib.cxx -o mylib.o
PHONY:clean
del mylib.o mylib.exe
在cmd控制台窗口下面输入以下语句
E:\app2>mingw32-make
g++ -c mylib.cxx -o tt.o
g++ mylib.o -o mylib.exe
E:\app2>mylib.exe
动态链接库的使用:
在E盘建一个文件夹名字是app4,在app3文件夹内建立2个文本文档,文本文档重命名为ddll.cxx、makefile然后保存,然后再app4下添加一个文本重命名为install,install的内容是:
${DLL} ${LIB}
copy${DLL} ${APPDIR}
copy ${LIB} ${APPDIR}
makefile的内容是:
SRC=ddll.cxx
DLL=libtt.dll
APPDIR=..\app4
LIB=libtt.a
all:ddll.exe
g++ ddll.o -o ddll.exe
ddll.exe:ddll.o
g++ -shared ddll.o -o ${DLL} -Wl,--out-implib,${LIB}
ddll.o:ddll.cxx
g++ -DDLLBUILD -c ddll.cxx -o ddll.o
.PHONY:clean
clean:
del ddll.o
在cmd控制台窗口下面输入以下语句
E:\>cd \app4
E:\app4>mingw32-make
E:\app4>mingw32-make install
PPT前八章
开源的免费的跨平台的,vc6.0不是开源库跨平台的
知识的发展也是有规律可循,并且这些规律同样是相对稳定的。
1.wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供 GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、Unix、Linux、OSX等操作系统和Windows Mobile, iPhone SDK 和嵌入GTK+的移动设备。
2.为什么选择wxWidgets?
开源、免费。跨平台。支持的编译器很多。丰富的组件。使用本地控制。使用标准C++和本地代码。
后来,形成了另一种编程模式。就是采用一种虚拟机的机制,屏蔽掉底层硬件和操作系统的不同,写的代码经过编译后形成一种中间语言代码,这种中间码直接在虚拟机里面执行,虚拟机负责将中间码转换成其所在平台上能执行的本地机器码。
在微软的.net 平台下面的编程模型也是这样的,不管是什么语言,写的代码经过相应的编译器编译以后,会生成中间码,然后.net framwork 里面的虚拟机读入这种中间码,产生本地机器上的本地码。 微软把这种产生中间码的语言所写的代码称为托管代码,意思就是说,这种代码是受.net framework 管理的,不能直接访问内存等硬件, 需要通过.net framework 来访问。
3.WxWidgets事件由三部分来描述:
1 Event Type: 标示事件类型(wxEventType)的唯一值。
2 Event Class: 它是一个wxEvent的派生类。该类对象附带了事件的相关信息。
3 Event Source: wxEvent存储了产生事件的对象和它的标示符。这是事件系统中唯一确定事件产生源(窗口)的整数。不同的窗体可能会产生相同类型的事件,通过窗口标示符可以对它们加以区分。
4、动态事件表的加载:
静态事件表是我们处理事件最常用也是比较简单的方式。但有的时候我们希望在程序运行的不同时间使用不同的映射关系,或者你更喜欢使用可以精确控制的事件,甚至是你希望在不同的类之间共享事件函数,这就需要动态事件映射的方法。
5、 自定义事件:
每一个事件都是由事件类型(wxEventType)唯一确定的,所以在自定义事件的时候,首先应该定义一个新的事件类型。
wxDEFINE_EVENT()
wxDECLARE_EVENT()
然后确定我们要使用的是已经存在的事件类定义还是定义全新事件。
最后是产生事件和传递事件。所谓产生事件就是实例化事件类,即声明一个事件类对象并初始化。而传递消息就是处理消息的过程。
6、事件的传播
有两种类型的事件:Basic Event 和 Command Event。它们的区别在于传播方式。Command Event可以从子控件到父控件传递,而Basic Event则不可以。
7、用户提供像素单位的控件位置和大小。这时:
如果窗体大小改变,组件的位置和大小不变;
不同平台上应用程序外观不同;
字体大小的改变会破坏布局;
如果需要改变布局,需要大量的工作来处理这种改变。
8、wxWidgets采用的布局控件的算法和其它GUI开发程序的算法非常类似,例如java的awt,gtk+和qt。它们基于这样一个假设:每个窗体可以报告它们自己需要的最小尺寸以及当它们父窗体大小改变时的可伸缩能力。这就意味着程序代码中没有给控件设计固定的大小,取而代之设置了一个窗口布局控件。这个控件被询问它需要的最合适的大小,再询问内部控件最合适的大小,以此类推。
9、我们可以使用这些sizer:
wxBoxSizer垂直
wxStaticBoxSizer大小相同
wxStdDialogButtonSizer
wxWrapSizer
wxGridSizer
wxFlexGridSizer
wxGridBagSizer
10、所有的GUI程序都以某种方式处理输入完成和用户的交互。这里主要有三种用户输入方式:
键盘事件
鼠标事件
游戏手柄事件
11键盘事件:
键盘事件是由wxKeyEvent表示的。总共有三种不同类型的键盘事件:按键,释放键和字符事件。键按下和键释放是原始事件,而字符事件是翻译事件。如果一个键被按下很长时间,会收到很多按键事件而只有一个键释放事件。要想收到键盘事件,必须使用wxWindows::SetFocus()获取键盘焦点。
12、键盘事件映射宏:
EVT_KEY_DOWN(func):产生wxEVT_KEY_DOWN事件。
EVT_KEY_UP(func):产生wxEVT_KEY_UP事件。
EVT_CHAR(func):产生wxEVT_CHAR事件。
wxEVT_KEY_DOWN事件会对应wxEVT_KEY_UP事件,而不一定产生wxEVT_CHAR事件。我们可以使用GetKeyCode()或者GetUnicodeKey()获取按键信息。wxKeyCode枚举了按键信息,其中32-127区间就是字符的ASCII码。
13、按键编码翻译:
键盘事件提供的是未翻译的按键编码,而字符事件提供的是翻译以后的字符编码。对于未翻译的按键编码来说,可打印字符永远是大写字母,其它则是在WXK_XXX中定义的字符。而翻译以后的按键编码,字符值和按键在文本编辑框中产生的字符相同。
14、鼠标事件:
总的来说,有两类鼠标事件。基本的鼠标事件用wxMouseEvent作为参数,不加任何改变地发送给相应的事件处理函数,窗口处理函数通常把它们翻译成为对应的命令事件(wxCommandEvent)。
鼠标事件可以有:鼠标左键、右键和中键按下;鼠标释放或双击;鼠标移入或移出窗口;滚轴等。当收到一个鼠标事件,你可以获取鼠标的状态信息以及Shift、Ctrl等状态键信息,可以获取鼠标指针相对于所在窗口的坐标信息。需要注意的是,wxMouseEvent事件不会传递给父窗口进行处理。
15、数据对象(data object):
wxDataObject类是剪贴板操作和拖放操作的核心,该类的实例代表要通过拖放或者剪贴板移动的事物。它是”smart”,因为它知道哪种格式可以支持(GetFormatCount 和GetAllFormats),也知道怎样来支持它们(GetDataHere)。如果实现了SetData函数,还能够从应用程序的外部接收不同格式的数据。
16、设备上下文:
在wxWidgets中,所有的绘画相关动作都是由设备上下文(Device Context)完成的。每个设备上下文都是wxDC的派生类。设备上下文相当于画图过程中的画布(画纸),这个画布可以是显示器,也可以使打印机,设备上下文决定了画布的属性,而且封装了在画布上画画的方法,比如画线,画点,等等。
我们需要理解的一个概念是:永远不会直接在窗口上绘图,每次在窗口上绘画,都必须建立一个窗口绘画设备上下文,然后再这个上下文上进行绘画操作。设备上下文也可以和图片和打印机绑定,还可以自己定义设计,这样,我们的绘画代码是可以共享的。
为了绘画,你需要选择绘画的工具,如果画线,你需要选择画笔;要填充区域,要选择画刷;而当前的字体、文本前景色和背景色则决定文字在画布上怎么显示。
17;可用的设备上下文:
wxClientDC - 客户区绘画
wxBufferedDC - 双缓冲,客户区
wxWindowDC - 整个窗口(极少使用,不是全部支持)
wxPaintDC – 只用于重绘事件中,客户区
wxBufferedPaintDC - 双缓冲,重绘事件
wxScreenDC - 直接屏幕绘画
wxMemoryDC - 直接图片上绘画
wxMetafileDC - 图元文件
wxPrinterDC- 打印机
18:什么是双缓冲绘图?:
如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术,即:在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。
19/wxColor:
wxWidgets中,颜色被抽象成为wxColor(wxColour)。有多种方法可以创建颜色对象:
1)使用三元值(0~255)构建,还可以为这个颜色指定alpha通道值;
2)使用标准颜色字符串构建;wxColourDatabase维护了一个标准颜色数据库,在颜色和颜色的名字之间建立了一个映射。
3)使用预定义颜色指针对象;
4)从另外一个颜色对象创建。
还可以通过wxSystemSetting::GetColour()获取很多系统缺省颜色。
20:wxFont:
使用wxFont设置设备上下文使用的字体。创建字体对象的时候需要指定:
字体大小(int),字体家族(wxFontFamily),字体类型(wxFontStyle)和weight等属性。
使用wxSystem::GetFont()获取系统使用字体;
类wxFontList保存了应用程序已经创建的字体,使用全局指针wxTheFontList的函数FindOrCreateFont()可以复用字体,避免发生内存泄露。
21wxPen:
画笔主要用来画线条和图形的轮廓,它在创建的时候要指定颜色,宽度和类型;也可以使用wxWidgets预定义的画笔指针;也可以使用wxThePenList->FindOrCreatePen()创建和存储需要的画笔;还可以根据wxPen的成员函数对画笔进行更精确的设置,如使用SetJoint设置线段连接后的转角方式,使用SetCap设置线条的末端样式。
22wxBrush:
画刷用来进行图像的填充和绘制背景,wxWidgets有多种方式可以创建画刷:
指定画刷的颜色和类型;
使用预定义的画刷指针;
通过wxTheBrushList->FindOrCreateBrush();
23设备上下文的绘图函数:
1) 绘制文本
DrawText和DrawRotateText
wxString text("WxWidgets");
wxClientDC dc(this);
wxFont font(20, wxFONTFAMILY_SWISS, wxNORMAL, wxNORMAL);
dc.SetFont(font);
dc.SetBackground(wxColor(_("Blue")));
wxSize sz = dc.GetSize();
wxCoord w, h;
dc.GetTextExtent(text, &w, &h);
int x = wxMax(0, (sz.x-w)/2);
int y = wxMax(0, (sz.y-h)/2);
for(int angle = -180; angle < 180; angle += 45)
{
dc.DrawRotatedText(text, x, y, angle);
}
2) 绘制线条和形状
DrawPoint
DrawLine and DrawLines
DrawRectangle and DrawRoundedRectangle
DrawCircle and DrawEllipse
DrawArc 绘制圆弧
DrawEllipticArc 绘制椭圆弧
DrawSpline绘制平滑曲线
DrawPolygon和DrawPolyPolygon绘制多边形
FloodFill 对已有图形区域进行填充
GradientFillLinear和GradientFillConcentric填充渐变颜色
约定成俗:线上最后一个点不被绘制
3)绘制位图
DrawBitmap(const wxBitmap & bmp,
wxCoord x, wxCoord y, bool useMask = false)
DrawBitmap(const wxBitmap & bmp,
const wxPoint & pt, bool useMask = false)
bool Blit (wxCoord xdest, wxCoord ydest,
wxCoord width, wxCoord height,
wxDC *source, wxCoord xsrc, wxCoord ysrc, wxRasterOperationMode logicalFunc=wxCOPY,
bool useMask=false, wxCoord xsrcMask=wxDefaultCoord, wxCoord ysrcMask=wxDefaultCoord)
24/图像编程:
一图胜千言。特别是在GUI程序开发中,一张适当的图片说明,会比一堆冗长的文字还来得简洁易懂。wxWidgets针对图片类型提供了便利的界面,可以支持工具栏、树状列表、Notebooks、按钮、HTML窗口和讲求效率的绘图需求。
wxWidgets支持四种和位图相关的类:前三个和平台相关
wxBitmap
wxIcon
wxCursor
wxImage
在使用图像之前,必须加载图像处理器:
static void wxImage::AddHandler (wxImageHandler * handler)
void wxInitAllImageHandlers ()
wxBitmap:
wxBitmap和GUI平台存在着很大的依赖性,它具备一个可选择wxMask(颜色屏蔽)属性以支持透明绘图(transparent)。在Windows平台上,wxBitmap是通过包装DIBs实作的,而在GTK+和X11平台上,每个wxBitmap则对应一个GTK+的pixmap对象或者是X11的pixmap对象,在Mac平台上,wxBitmap对应的对象则是PICT。值得注意的是,wxBitmap随时可以和wxImage进行互相转换,以节省系统资源。类wxBitmap的主要用途有:
1)通过设备上下文将位图画在窗口上;
2)在某些组件中作为图像标签;
3)在将某个图形绘制到窗口之前作为绘制缓冲区。
25/wxIcon
wxIcon用来实作各个平台上的图标,图标指的是一种背景透明的小图片,一般用来代表不同的frame窗口或者对话框窗口。在GTK+、X11和Mac平台上,icon就是特定大小,并且含有wxMask旗标的一种特殊wxBitmp; 而在Windows平台上,wxIcon则是包装了HICON对象。多种方式创建图标
wxIcon可以通过XPM数据创建,也可以通过wxBitmap对象创建,还可以从文件读取
wxCursor
wxCursor则是一个用来标示鼠标光标的动态图片,在GTK+平台上是用GdkCursor的,而X11和Mac平台上用的是各自的Cursor对象,而在Windows平台上则是以包装HCURSOR来呈现,wxCursor有一种称之为热点的概念 (所谓热点指的是,图片中用来精确代表光标点选位置的那个画素),当然,我们也可以视情况把它屏蔽掉。
wxImage
wxImage则是这四个类别中,唯一一个与平台无关的实作,它支持24bit色深位图以及支持「alpha通道」(一种不透明的设定,和transparent相对,0表示完全透明,255表示完全不透明)的能力。wxImage不但可以从 wxBitmap类里,经由呼叫wxBitmap::ConvertToImage()函数转换过来,也可以自各种图片档案中加载而得到。它所支持的图型格式也可以经由外挂的图型处理程序来扩展。因为 wxImage本身储存的数据格式是以bitwise方式,理论上你也可以直接操作其图片上某些bit,所以wxImage也提供对图片进行基本操作的接口。但和wxBitmap不同的是,wxImage不可以直接在wxDC及其衍生的类别上直接绘图。如果要在wxDC上绘图,我们一定要先把wxImage转换成wxBitmap,然后才可以使用wxDC的 DrawBitmap()函数进行绘图。wxImage可以单纯设置一个颜色屏蔽旗标来实现简单的透明效果,也支持通过alpha通道方式来实现复杂的透明效果。
编辑图像
1)操作颜色数据
2)透明处理
3)变化图像:缩放、旋转、镜像、颜色消减
4)保存图像
26对话框(Dialog)是人机交流的一种方式,用户通过对对话框进行设置,计算机就会执行相应的命令包含按钮和各种选项,通过它们可以完成特定命令或任务。对话框与窗口是有区别,它没有最大化按钮、没有最小化按钮、大都不能改变形状大小(打文件对话框是可以改变大小的)。wxWidgets提供了四类标准对话框,也可以定制对话框。这四类标准的对话框是:
信息对话框、文件和目录选择对话框、选项和选择对话框和输入对话框。
一、 单选题(共20分)
1.下列那一项不是面向对象系统所包含的要素( )。
A重载 B对象 C类 D继承
2.在int a=3,*p=&a;中,*p的值是( )。
A变量a的地址值 B无意义 C变量p的地址值 D变量a的值
3.下面对模板声明正确的是( ):
A template<T> B template<class T1,T2>
C template<class T1,class T2> D template<class T1;class T2>
4.以下关于This指针的描述中,错误的是( ):
A this指针是指向对象的指针B This指针是在使用对象引用成员函数时系统自动生成的
C This指针是指向成员函数的指针D This指针可以在程序中显示使用
5.下面有关析构函数的描述正确是( )
A.析构函数可以带参数 B.析构函数可以有多个
C.析构函数在对象被撤消(销毁)之前执行 D.析构函数可以为虚函数
6.在( )情况下适宜采用inline定义内联函数。
A、 函数体含有循环语句 B、 函数代码少、频繁调用
C、 函数代码多、不常调用 D、函数体含有递归语句
7.若有int k=7,x=12;则其值为3的表达式为( )
A x%=(k%=5) B x%=(k-k%5)
C x%=k-k%5 D (x%=k)-(k%=5)
8.下面引用的定义中,错误的是( )
A. int I; int &j; j = I; B. int I=6; int &j = I;
C.char d; char &k=d; D.float I; const float &j=I;
9.有关类的友元描述错误的是( )
A.友元函数可以访问该类的所有成员。 B.友元可以提高程序的运行效率。
C.可以设置一个类为另一个类的友元。 D.友元关系可以继承。
10.如果某个类想使用一个静态成员变量统计其存在对象的个数,不用处理的是( )
A 构造函数 B 拷贝构造函数 C 析构函数 D 重载赋值运算符
11.下面叙述错误的是( )
A 基类的protected成员在派生类中仍然是protectedB 基类的protected成员在public派生类中仍然是protected的
C 基类的protected成员在private派生类中是private的D 基类的protected成员不能被派生类的对象访问
12.cout代表( )
A 显示器 B 打印机 C 外部设备 D 磁盘
13.在键盘上输入字符串时,应该( )
A 使用单引号 B 使用双引号 C 不使用任何符号 D 以上均可
14.设置虚基类的目的是( )
A 简化程序 B 消除二义性 C 提高程序运行效率 D 减少目标代码
15.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( )
A 与虚基类下面的派生类个数有关 B 多次 C 二次 D 一次
16.下列不是控件的是( )
A组合框 B编辑框 C对话框 D列表框
17.在下列DC中,客户区DC是( )
A CPainDC B CClientDC (C) CWindowDC (D)CMetaFileDC
18.不是Windows应用程序的资源的是( )
A加速键 B对话框 C菜单 D窗口
19.执行以下程序段后,输出结果为( )
int x=2,y=4;
int &z=x;
z=!y?2*x;2*y;
cout<<x;
A、6 B、4 C、2 D、8
20.在下列关于文档/视图结构应用程序的说法中,( )是错误的。
A、视图是用户界面,用于显示、打印文档中的数据,并管理与用户的交互
B、所有的Windows应用程序都采用这种结构
C、文档用于管理应用程序的数据
D、文档类是应用程序进行数据定义和初始化的地方
二. 填空题(20分)
1.在C++中,函数的参数有两种传递方式,它们是值传递和 。
2.拷贝构造函数使用 作为参数初始化创建中的对象。
3.在Visual C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型 ;在基类和派生类中,成员函数的覆盖是指派生类成员函数与在基类被覆盖的成员函数名、 、个数 和 均相同 。
4. 面向对象的程序设计有四大特征,它们是 、继承性、 和 。
5.派生类对基类继承控制访问有______种。
四、 名词解释(共15分)
1.API 2. 重载 3. 消息 4.MFC 5.浅拷贝
一.选择题
ADCCD BDADD ACCBD CBDDB
二.填空题
1.地址或指针或引用传递
2.引用
3.不同、参数个数、参数类型和返回值类型
4.抽象、封装、 继承 、 多态
5.3
四.名词解释
1.API API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。
2. 重载
3. 消息
4.MFC
5.浅拷贝
一、 单选题(共20分)
1. 关于对象概念的描述中,( )是错误的。
A) 对象就是C语言中的结构体 B) 对象是状态和操作的封装体
C) 对象之间的信息传递是通过消息进行的 D) 对象是某个类的一个实例
2. 已知,int m=10,在下列表示引用的方法中正确的是( )
A)int &x=m B)int &y=10 C)int &z D)float &t=&m
3. 假设MyClass是一个类,则该类的拷贝构造函数的声明语句为( )
A) MyClass(MyClass p); B ) MyClass& (MyClass p);C) MyClass(MyClass& p); D) MyClass(MyClass * p);
4. 已知类A是类B的友元,类B是类C的友元,则( )
A) 类A一定是类C的友元 B) 类C一定是类A的友元
C) 类C的成员函数可以访问类B的对象的任何成员D) 类A的成员函数可以访问类B的对象的任何成员
5. 下列对继承关系的描述中,正确的是( )
A)在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的
B)在公有继承中,基类中只有公有成员对派生类的对象是可见的
C)在私有继承中,基类中只有公有成员对派生类对象是可见的
D)在私有继承中,基类中的保护成员对派生类的对象是可见的
6.模板类型参数包含关键字( )
A) class B) typename C) class或typename D) class与typename
7. 已知:print ( ) 函数是一个类的常成员函数,它无返回值,下列表示中,
( )是正确的
A) void print ( ) const ; B) const void print ( );
C) void const print ( ); D)void print (const);
8. 考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是( )
A)test(5); B)test(5,8); C)test(6,"#"); D)test(0,0,"*");
9. 如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是( )
A)virtual show( )=0; B)virtual void show( );
C)virtual void show( )=0; D)void show( )=0 virtual;
10. 当用户进行鼠标操作时,释放鼠标左键会发出( )消息。
A)WM_lBUTTONDOWN B)WM_lBUTTONUP
C)WM_lBUTTONBLOCK D)WM_RBUTTONUP
11.应在下列程序划线处填入的正确语句是( )
#include
class Base
{ public:
void fun(){cout<<"Base::fun"<<ENDL;}
};
class Derived:public Base
{ void fun()
{_____________ //显示调用基类的函数fun()
cout<<"Derived::fun"<<ENDL;
}
};
A. fun(); B. Base.fun(); C. Base::fun(); D. Base->fun();
12. 在下列叙述中,不是Windows程序的特点是( )
A. Windows程序通过窗口与用户进行交互。
B. Windows程序是应用事件驱动进行编程。
C. Windows程序是利用消息进行通信。
D. Windows程序是利用过程驱动的程序。
13. 下列不是Windows绘图对象类的是( )
A. CBrush B. CPen C. CRect D. CFont
14. 在下列MFC中,不是控件类是( )
A. CListCtl B. CComboBox C. CTreeCtl D. CMenu
15. 当单文档应用框架接收到框架窗口的命令时,它将按如下次序来寻找相应的消息控制函数( )
A.视、文档、SDI主框架、应用 App
B.文档、应用 App、视、SDI主框架
C.视、文档、应用 App、SDI主框架
D.SDI主框架、文档、视、应用 App
16. 关于动态绑定(联编)的下述描述中( )是错误的。
A.动态绑定(联编)是在编绎时不确定操作数的。
B.动态绑定(联编)是以虚函数为基础的。
C.动态绑定(联编)是在继承前提下的一种多态性。
D.动态绑定(联编)是要类的继承是公有的。
17. C++中,下面设置的默认参数正确的是( )
A. void fun(int x=0,int y,int z) B. short fun(int x=0,int y=0,int z)
C. float fun(int x=0,int y,int z=0) D. double fun(int x,int y=0,int z=0)
18. 下面有关构造函数的描述正确的是( )
A.构造函数只能有一个 B.构造函数不能带参数
C.构造函数不能重载 D.构造函数不能是虚函数
19. 有关重载的描述正确的是( )
A.运算符(操作符) + new . ?:都可以重载 B.运算符(操作符)重载不改变操作数的个数
C.运算符(操作符)重载可以改变优先级数 D.运算符(操作符)重载可以改变语法结构
20. 在下列叙述中,叙述错误的是( )
A.Windows应用程序与控制台(Console)程序的入口函数不同。
B.在基于MFC编写的程序中,其类大部分都是由CObject类派生出来
C.WM_LBUTTONDOWN、WM_RBUTTONUP、WM_KEYDOWN都是鼠标消息
D.对话框、图标、菜单、光标等在VC中都可以是作为资源来处理
二. 填空题(共20分)
1. 描述命题"A小于B或小于C"的表达式为
2. 当一个成员函数被调用时,该成员函数的 指向调用它的对象。
3. 举出C++中两种用户自定义的数据类型: 、
4. 动态联编要满足两个条件,它们是 被调用的成员函数是虚函数 、 用指针或引用调用虚函数
5. 在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为 ,定义该类至少具有一个 。
6.Windows应用程序的入口函数是___ ___。
7.MFC英文名称的全称是(中文)___
一.选择题
AACDB AACCB CDCDA ADDBC
二.填空题
1.A<B||A<C
2.this指针
3.类 、 枚举
4.被调用的成员函数是虚函数 、 用指针或引用调用虚函数
5.抽象类,纯虚函数
6.WinMain()
7.微软基础类