您好,欢迎访问三七文档
程序结构Scoping(名的有效范围,可见性,域)lifetime,生存期globalobjectsanddatasharing,数据共享staticmembers,静态成员friends,友元constobjects,不可改变的量或成员preprocessing,预处理multiplesourcefiles,多源文件程序Scoping,名的有效区域block,{}块,在块内声明的objects在块内有效(循环,选择,函数,…)类,一个类构成一个域,类成员可以自由访问别的成员,类外用class_name::member或object.member。文件域:一个源文件中的声明在本文件内有效名只在被定义后的{}块内有效形式参数,只在函数域内有效visibility(可见性)名的可见性(visibilityofidentifier)同一域内,不能同名(函数重载相当于不同的名)不同域中可以同名,内层遮蔽外层生存期内存中存在该object的时间static,静态object和全局object:始终存在,从程序开始运行到结束静态object除了可见性外,相当于全局object(生存期,初始化,再赋值)dynamic,一般都是,从声明到本块结束数据共享局部与全局(local&globalobjects)局部:出现在{}块中的,只在该层{}块中有效全局:所有{}块之外,属于整个源文件,在源文件内都有效,可以用来传递数据或者共享。最大的局部不同文件中的数据共享,externstaticmembers,静态成员类的静态数据成员始终有效。与该类对象无关,属于该类,不属于特定对象。定义和初始化。只能全局初始化。intPoint::Count=0;main(){…}静态函数成员,始终有效,不依赖该类对象。直接调用,用来处理静态成员Point::GetC();指向类成员的指针静态成员,同非类成员(普通全局对象/函数),指明类名int*count=&Point::count;int(*func)()=Point::GetC;非静态成员,在*ptr_name前加classname::(不建议使用)intPoint::*pcount=&Point::count;int(Point::*pgetc)()=Point::GetC;friends(友元,特别授权)根据封装的要求,类的数据成员一般都是私有的,外界不可直接访问,但为了方便,也可以特别授权某些函数或者类访问。格式:在该类中说明被授权的函数或者类是friends(friends加函数或类的声明)。授权不能继承,不自动反向授权。distanceexampleconstantobjects,常数对象只可以在定义的时候初始化一次,不能在程序中赋值常数对象只能调用常函数(由const修饰的函数),常函数是同名函数的重载。常数成员,在某一对象中是常数,只能在构造函数中通过初始化列表初始化。源程序组织(makefile,projects)完成一个任务的程序可以写成多个文件,通过project,makefile等文件组织起来。通过编译连接产生一个或多个执行文件(canmakeeverything)。Project,Makefile:定义一系列逻辑依赖关系,以及如何满足这些关系的操作。一般把类,结构,函数,常数等的声明放到头文件中(.h),函数体,全局量放到.cpp文件中。.h文件需要用#include包含到.cpp文件中。VC的简单多源文件项目打开一个项目project-addtoproject-new(orfiles)simpleMakefile编译和连接是分开的(数据共享问题)只能有一个main函数外部变量(extern)源文件中要用的变量在别的文件中声明了,在这个文件的声明前面加externinta[10];//file1externinta[10];//file2函数不需要加extern全局变量或函数声明为static则只能在该文件中使用,别的文件中不能通过extern访问标准C++库和名空间每一个C++源程序中所有用到的函数名和变量都要先声明C++把运行库函数,预定义类,模板等名放在std名空间中preprocessors(预处理命令)编译过程的第一步是对源程序进行预处理,相当于修改源文件。(编译过程:行重组,预处理,token分析,语法分析,语义分析,……)#include,将include的文件插入该条语句处#define,定义,替换,直接将源程序出现的该名称替换为其定义#undef取消定义条件编译,注意条件编译改变源程序,不等于if/else结构(GNU,cpp)上机练习(习题5-14,6-20)仔细阅读教材例题,编译运行创建多文件项目,并编译运行教材例题5_10,5_11自由练习题(二)作业定义一个如例5-4那样具有静态数据成员的Point类,随机产生十个点,座标范围为0~100。输出每个点的编号,座标,以及与它距离最近的点的距离,座标和编号。不交
本文标题:b程序b结构
链接地址:https://www.777doc.com/doc-7634365 .html