Visual C++编程基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

VISUALC++编程基础FondamentidiprogrammazioneconVisualC++C++的注释C++使用两个反斜杠开始一个注释行,在两个反斜杠后的任何文字都是注释的一部分。如果需要几行的注释,则每一行都由双反斜杠开始。也可以在C++语句后插入注释。还可以使用C语言风格的注释,这种注释可以在几行间使用。预处理指令和C语言一样,C++使用预处理器。预处理器是在编译器运行前执行的程序。预处理器用#include后文件内的代码替换这个#include指令。我们可以使用事先定义的函数、类、变量以及其它代码元素,以减轻我们的工作量。如果用双引号把文件名括起来,这就说明这个文件是程序的一部分。预处理器首先查看当前的目录,如果没有找到文件,会查看在【选项】对话框中的【路径】选项卡中定义的路径。每条预处理指令占一行,末尾不带分号。常量程序中有一些值是不需变化的,叫做常量。在C++中可以用#define指令告诉预处理器用字符串的值替换程序文件中的这个字符串。最好使用#define指令定义一些有意义的名称,而不应该使用无意义的数字、符号、使得代码更具可读性。常量可以被重新定义为另外的值。C++还提供了一种更好的声明常量的方法:使用const声明。采用const方法,可以声明常数的数据类型。C++会检查初始化符号的数据是否与const关键字后声明的数据类型一致。Const关键字在C++中有许多用途,除了声明常量,它还可以把函数的参数和函数值设为只读,使这些值不会被更改。关键字关键字是C++内部使用的标识符,是语言的组成部分。不能把关键字作为变量、函数名。直接量直接量是程序中的值,它是常量,虽然它们存储在内存中,但是不能访问它们的地址。每个直接量都有相应的类型,如整数类型的直接量被标记为整型。语句C++语句是以分号结尾的用来声明、命令和计算的句子。复合语句是由包含在大括弧中的两个以上的语句组成的一个大语句。变量和数据类型变量是内存中被命名的位置,用于存储程序中的信息。变量名和C++的任何标识符一样,可是任意长度,并可包括任意字母、数字和下划线。类型的大小以字节为单位,提示这种类型能够保存的数值或字符的范围。带有unsigned限定符的类型只能保存非负值,带有signed限定符的类型能保存负值、零或正值。匈牙利命名法,思想是变量的数据类型成为变量名称的一部分。它的变量前缀是数据类型的缩写。数组是包含一定类型的几个元素的变量,通过数组操作符可以获取或设置数组的某个元素。通过两个方括号声明一个二维数组。字符串是字符串类型的变量,可以用几种方式声明字符串,无论用什么方式声明,可以用指针或数组的方式来访问它们。字符串可以用/0结尾。C++是一种对类型依赖性很大的语言,编译器会进行大量的类型检查工作以确保传递给正确的参数类型和参数个数,如果能够转换类型,编译器会自动把一定的值转换为合适的类型,否则,编译器会报错。为变量分配内存堆栈是系统使用的临时存储区域,它是后进先出的数据结构,最后推入的元素,最先弹出。堆栈主要用于函数调用。当调用函数时,各种数据被推入函数的顶部——传递给函数的参数、函数返回的值、函数中声明的局部变量等。堆是一种相对长期的存储区域。程序用C++的new操作符分配堆,对new的调用分配所需的内存并返回指向内存的指针。与堆栈不同,必须通过调用new明确地分配堆内存,也必须通过调用delete操作符明确地释放内存,堆不会自动释放内存。如果没有delete释放占用的堆内存,就可能发生内存溢出。内存中没有被释放的内存块会浪费内存空间。函数函数可以看成一个模块,可以在程序中多次被调用,函数有以下几种形式。函数可以带参数,也可以不带参数。参数是传递给函数的值,函数需要这些参数完成工作。函数可以返回值,也可以不返回值。C++运行时库C++编译器提供了一个函数、常量、变量和类型的集合,叫做运行时库。在VisualC++2010中包含了C运行时库。除了运行时库外,VisualC++2010中包括了标准的C++库,它是基于C++模板的函数和类的库。MAIN函数每个C++程序都从执行main函数开始,它是程序的主体。与其它函数一样,main函数也具有结果类型,如果实现声明了结果类型,则必须在函数中使用return语句。表达式表达式是求值的语句,如算术表达式、布尔表达式和关系表达式等。操作符包括算术运算、逻辑和关系运算、增量和减量运算、位运算、赋值语句、sizeof、算术条件,逗号和其它操作符。控制语句C++的控制语句,包括循环控制、分支控制、多路分支控制、终止循环、跳出循环开始下一个循环、goto语句等。通过IOSTREAM输入输出Cout对象是指向标准C++Iostream对象,通常与屏幕或屏幕上的窗口相关联,与之对应的输入流对象称为cint,它指向标准输入,通常与键盘相关。在VisualC++中,使用插入操作符将字符串插入cout中,使得插入的字符串显示在命令提示符窗口中。作用域C++程序并一定能访问所有变量、类型、常量或函数。能被访问的范围由声明所使用的作用域决定。声明为全局作用域的项目不仅在当前代码中可以被访问,而且在程序的其它部分也能被访问。每个函数或模块定义了自己的局部作用域。在局部作用域内声明的变量如果与全局变量同名,局部变量将屏蔽全局变量。函数内部的大括号{}内的代码,叫做子程序局部作用域。在C++中还有一种类作用域,在类中声明的成员函数,数据成员、类型和嵌套类只在这个类中可以被访问。在类成员函数实现中也可以被访问。指针基础指针是一个内存地址,在大多数情况下,指针是另外一个变量的地址,是C++中重要的数据结构。在赋值操作符的左边,间接量操作符*表示一个指针,在赋值操作符的右边,地址操作符&可以获得变量的地址,这个地址作为指针的初始值。在C++中声明变量时,*与数据类型相邻,而且仅作用于离*最近的一个变量。赋值操作符右边的*是指针引用操作符。除了使用指针获得变量的值,还可以使用指针改变变量的值。数组和指针C++的指针往往和数组配合使用。事实上数组名就是一个指向数组第一个元素的指针,可以使用指针来实现数组。指针和字符串字符串可以看成一个由字符构成的数组,所以字符串变量名也是一个指针。指针作为函数的参数和函数的结果在函数中传递参数的默认方法是传值,传值过程中,函数获取了所传值的一个副本,可以根据需要改变这个复制的值,最初的数据将保持不变。如果函数需要传递几个参数,并需要在函数中改变所传送的参数,这时,可以采用传地址方式。函数采用指针来改变原来的数据而不必考虑指针所指向地址的内容。如果需要在函数中避免修改数据,可以使用const来声明参数。指针除了可以指向普通的变量数组和字符串之外,还可以指向其它类型的变量。和其它类型的变量一样,指针可以保存在一个数组中。引用C++中引入一个新的变量——引用变量,引用本身不是一个独立的变量,它是指针的另一种表示方式。引用必须初始化为一个特定的变量,并且在以后的引用中不能引用其它变量。另一种参数传递的方法是通过引用进行传递。所传递的是一个非引用变量,用来初始化参数。头文件和实现文件在C++中一般把声明放在C++的头文件中(H格式),定义放在实现文件中(CPP格式),然后使用include语句包含头文件。许多大型的C++程序可以划分为几个CPP文件,如果其中几个CPP文件可能包含相同的声明,这时把它们放在同一个H文件中将节省大量资源。类的结构C++的类的结构被分为两个部分,第一个部分描述对象的外部视图,对应着抽象数据类型的规范说明。标识符被称为类名,关键字private和public用于定义在类中声明的标识符能否被其它程序单元引用。这些标识符用于标识类中声明的数据结构或操作,叫做类的成员,与数据结构有关的成员叫做数据成员,与操作有关的成员叫做成员函数。Private和public称为描述这些成员在程序中的可访问性的访问控制描述符。构造函数和析构函数构造函数和析构函数是类中声明的两种特殊的成员函数。构造函数与类名同名,由类名前冠以一个符号~,它的作用是在对象被创建时使用特定的值构造对象,或者说把对象初始化为一个特定的状态,而析构函数完成对象被删除前的一些清理工作,这些工作一般与构造函数所完成的工作的目的正相反。成员函数的内联实现可以使用两种方式使在类中声明的成员函数成为内联函数。把函数体放在类的声明中,可以在类的一个成员函数内引用在成员函数之后说明的成员名字。用inline关键字进行声明,对于使用inline关键字实现的内联成员函数,它的声明必须出现在对它的每个调用之前。成员函数和成员函数名的重载在类中,可以声明重载函数及带有默认参数值的函数。重载可以实现资源共享。同一个标识符可以为同一个类中的不同成员函数命名,这个名表示相似的行为,但行为的实现不一样。WIN64、WINDOWS.H和SDKWindows7是基于Windows应用程序编程接口的,叫做WindowsAPI。Windows7使用64位的版本,称为Win64。API是大量函数加上数字常量、宏、结构、类型和相关项的集合,可以从C++、VisualBasic、汇编语言和其它编程语言中调用这些函数。大多数API定义在称为Windows.h的文件中,VisualC++2010编程环境中有这个文件,也可以从Windows平台软件开发工具包中得到它,但如果没有特殊的要求,不需要单独的SDK。为不同的WIN64平台编程不同的64位操作系统共用相同的API,意味着所有的64位Windows的程序都将具有极高的可移植性。因此,能够为Win7编写程序,就能为Win8和Win10编写程序,尤其在利用MFC时。多任务和多线程64位Windows是多任务的系统,能够同时运行几个程序。多任务是抢占式的。在抢占式多任务环境中,操作系统为每个正在运行的程序分配很小的时间段,看起来就像几个程序在同时运行,实际上,每个程序都会暂时停止运行。Windows系统也允许在一个应用程序中执行多线程,多线程是与多任务相关的概念。大多数程序只有一个执行线程。在代码中有一条路径,每条路径轮流沿着这条路径执行。但是有些程序可以有几个单独的执行线程同时运行。如在后台打印的时候,你可以在主线程中继续其它工作。事件Windows花费大量时间等待你的动作以便作出响应,所以这种系统也叫事件驱动系统。当用户按下一个键、移动鼠标或单击鼠标键时,电脑通知Windows系统已经发生了一个事件,以及事件的种类、发生的时间、发生的位置。事件用如下三种方式产生:通过输入设备。通过屏幕上一些可视的对象。来自Windows内部。消息当Windows捕获一条事件后,它会编写一条消息,把相关信息放入一个数据结构中,然后把包含数据结构的消息发送给需要消息的程序。Windows消息是在Windows.h文件中用宏定义的常数。消息常数名通常为WM_XXX。Windows把消息放入目标应用程序的消息队列中,在消息队列中所有消息都处于等待状态,直到应用程序准备处理它。消息循环应用程序通常有一段代码为消息循环。在应用程序的消息队列中检索到WM_QUIT消息以前,这个循环会不断运行。当它收到WM_QUIT时,GetMessage返回false,循环停止,这时应用程序终止。当GetMessage返回一条消息后,循环把它传递给TranslateMessage函数来查看这个消息是不是来自键盘,如果是来自键盘的消息,则TranslateMessage把原始键盘消息转换为WM_CHAR消息,WM_CHAR消息设计为传递有关键入字母信息,TranslateMessage不处理非键盘消息。接下来,DispatchMessage函数确定应用程序中应该得到消息的窗口,并把消息发送给它,然后开始下一个循环。消息处理函数消息处理函数是用于特定消息的一些代码。收到消息的应用程序会做些什么,取决于应用

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功