您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第6章 数据共享与安全
第6章数据共享与安全6.1作用域与生存期6.2静态成员6.3友元6.4数据安全6.1作用域与生存期作用域是指变量、对象以及对象的数据成员等实体在程序中的有效范围。只有位于实体的作用域中,才有可能访问该实体。生存期是指实体在程序运行过程中的生命周期。如果实体的生命周期结束,则该实体将会消亡,并由系统自动回收其所占据的内存等资源。作用域1.块作用域块是一个由一对花括号({})形成的程序段。局部变量/对象具有块作用域,从定义处开始,到所在块的结束处(})为止。例如intfun1(inta)//函数fun1{…intb,c;//局部变量b、c…{intd;//定义在复合语句中的局部变量d…}}在不同的块中可以分别定义同名的变量/对象,它们代表不同的局部变量/对象,在内存中占据不同的空间,互不干扰。形参也是局部变量,在main函数中定义的变量也是局部变量。2.类作用域类的作用域从类的定义时class后面({)开始,到类的结束处(})为止。C++语言把类的所有成员作为一个集合,类的数据成员和成员函数都在该类的作用域内。3.文件作用域在块或者类的外部定义的变量或者对象,通常称为全局变量或者全局对象。C++语言规定全局变量/对象具有文件作用域,从定义处开始,到所在文件的结束处为止。全局变量/对象在其作用域范围内,可以被本文件其他函数共同使用。作用域屏蔽#includeiostream.hinta=1;//全局变量intmain(){inta=2;//局部变量couta=aendl;return(0);}4.名字空间名字空间(namespace)用于把一个程序的名字空间划分成多个易于管理的小空间,减少程序中的命名冲突。定义名字空间的语法形式是:namespace空间名{标识符定义或声明}说明名字空间必须在文件作用域内定义,并且允许嵌套定义。同一个名字空间中的标识符不得同名,不同名字空间中的标识符可以同名。可以用两种方法引用一个名字空间中的标识符,第一种是作用域运算符(::),另一种是using声明。第一种方法与前面介绍的类名::的方式非常相似,using声明则能够把某个名字空间中的所有标识符,都引入到当前作用域内。using的使用形式是:usingnamespace空间名;6.2静态成员静态成员描述和管理类的公共信息。静态成员包括静态数据成员和静态成员函数。静态数据成员用于描述和存储类的公共信息,它独立于具体的对象,由类进行维护和管理。静态数据成员class类名{……private://静态数据成员声明static类型静态数据成员名;};//静态数据成员定义及初始化类型类名::静态数据成员名=初值;静态成员函数class类名{public:static类型静态成员函数名(形参表);//静态成员函数声明……};类型类名::静态成员函数名(形参表)//静态成员函数定义{……}说明静态成员函数不能直接访问普通数据成员,也不能调用普通成员函数。静态成员函数的调用方式可以采用对象.或者对象指针-的形式,表明静态成员函数为类中所有对象所共享。除此之外,还可以用类名::的方式调用,表明它独立于具体的对象。6.3友元友元函数就是指该函数被声明为某个类的友元。声明友元函数的语法形式为:class类名{public:friend类型友元函数名(形参表);//友元函数声明friend类型类名::友元函数名(形参表);//友元函数声明……};友元类如果在A类中用friend声明B类为友元,则B类就成为A类的友元类。其语法形式为:classA{……friendB;//友元类声明……};6.4数据安全C++语言保证数据安全的主要做法是,设置形形色色的常量,使得在程序运行过程中无法修改它们的值,即允许访问,但不得赋值。声明常量的语法均以const为核心。常引用const类型&引用名=初值;如果某个引用被声明为常引用,在程序中就不能通过常引用,修改它所引用的变量或者对象。常引用通常作为函数的形参,使得被调函数无法通过引用形参,修改主调函数中实参变量的值。常指针1.指向常量的指针const类型*指针变量名;2.常量指针类型*const指针变量名=初值;3.指向常量的常量指针const类型*const指针变量名=初值;常对象const类名对象名(参数表);某个对象被声明为常对象并初始化以后,该对象中的所有数据成员的值都不能被修改。常对象不能调用普通的成员函数,只能调用常成员函数。常成员1.常数据成员class类名{private:const类型数据成员名;…};常成员函数class类名{public:类型成员函数名(形参表)const;…};类型类名::成员函数名(形参表)const{…}
本文标题:第6章 数据共享与安全
链接地址:https://www.777doc.com/doc-3375331 .html