湖南大学:《C++程序设计》第10章 静态成员与友元

C++程序设计 湖南大学 杜四春、银红霞 第10章静态成员与友元 10.1静态成员 10.2友元 103友元应用实例
C++程序设计 湖南大学 杜四春、银红霞 第10章 静态成员与友元 10.1 静态成员 10.2 友元 10.3 友元应用实例

C++程序设计 湖南大学 杜四春、银红霞 静态成员是指声明为 Istatic的类成员在类的 范围内所有对象共享某个数据。友元是一种定 义在类外部的普通函数,但它需要在类的内部 进行说明,为了与该类的成员函数加以区别, 在说明时前面加上关键字 friend。友元不是成 员函数,但它可以访问类中的私有成员。其作 用是提高程序的运行效率。C++语言中的友元 函数为在类外访问类中的私有成员和保护成员 提供了方便,但破坏了类的封装性和隐蔽性。 友元可以是一个函数,称为友元函数,也可以 是一个类,称为友元类。友元函数和友元类统 称为友元
C++程序设计 湖南大学 杜四春、银红霞 静态成员是指声明为static的类成员在类的 范围内所有对象共享某个数据。友元是一种定 义在类外部的普通函数,但它需要在类的内部 进行说明,为了与该类的成员函数加以区别, 在说明时前面加上关键字friend。友元不是成 员函数,但它可以访问类中的私有成员。其作 用是提高程序的运行效率。C++语言中的友元 函数为在类外访问类中的私有成员和保护成员 提供了方便,但破坏了类的封装性和隐蔽性。 友元可以是一个函数,称为友元函数,也可以 是一个类,称为友元类。友元函数和友元类统 称为友元

C++程序设计 湖南大学 杜四春、银红霞 10.1静态成员 类相当于一个数据类型,当说明一个某类 的对象时,系统就为该对象分配一块内存单元 来存放类中的所有成员。但在某些应用中,需 要程序中属于某个类的所有对象共享某个数据 为此,一个解决的办法就是将所要共享的数据 说明为全局变量,但这将破坏数据的封装性; 较好的解决办法是将所要共享的数据说明为类 的静态成员
C++程序设计 湖南大学 杜四春、银红霞 10.1 静态成员 类相当于一个数据类型,当说明一个某类 的对象时,系统就为该对象分配一块内存单元 来存放类中的所有成员。但在某些应用中,需 要程序中属于某个类的所有对象共享某个数据。 为此,一个解决的办法就是将所要共享的数据 说明为全局变量,但这将破坏数据的封装性; 较好的解决办法是将所要共享的数据说明为类 的静态成员

C++程序设计 湖南大学 杜四春、银红霞 10.1.1静态数据成员 C++中,同一个类定义多个对象时,每个对象拥 有各自的数据成员(不包括静态数据成员),而所有 对象共享一份成员函数和一份静态数据成员。静态数 据成员是类的所有对象中共享的成员,而不是某个对 象的成员,因此可以实现多个对象间的数据共享。静 态数据成员不属于任何对象,它不因对象的建立而 生,也不因对象的析构而删除,它是类定义的一部分, 所以使用静态数据成员不会破坏类的隐蔽性。 对静态数据成员的操作和一般数据成员一样,定 义为私有的静态数据成员不能由外界访问。静态数据 成员可由任意访问权限许可的函数访问。可以在类的 成员函数中改变静态数据成员
C++程序设计 湖南大学 杜四春、银红霞 10.1.1 静态数据成员 C++中,同一个类定义多个对象时,每个对象拥 有各自的数据成员(不包括静态数据成员),而所有 对象共享一份成员函数和一份静态数据成员。静态数 据成员是类的所有对象中共享的成员,而不是某个对 象的成员,因此可以实现多个对象间的数据共享。静 态数据成员不属于任何对象, 它不因对象的建立而产 生,也不因对象的析构而删除,它是类定义的一部分, 所以使用静态数据成员不会破坏类的隐蔽性。 对静态数据成员的操作和一般数据成员一样,定 义为私有的静态数据成员不能由外界访问。静态数据 成员可由任意访问权限许可的函数访问。可以在类的 成员函数中改变静态数据成员

C++程序设计 湖南大学 杜四春、银红霞 静态数据成员不从属于任何一个具体对象,所以 必须对它初始化,且对它的初始化不能在构造函数中 进行。类中用关键字 static修饰的数据成员叫做静态数 据成员。说明一个静态数据成员的方法与说明一个 般静态变量一样,只不过前者是在一个类中说明。 静态数据成员的使用方法如下: 1)静态数据成员的定义与一般数据成员相似, 但前面要加上 statIc关键词。 (2)静态数据成员的初始化与一般数据成员不同, 静态数据成员初始化的格式如下 :=; (3)在引用静态数据成员时采用格式: :
C++程序设计 湖南大学 杜四春、银红霞 静态数据成员不从属于任何一个具体对象,所以 必须对它初始化,且对它的初始化不能在构造函数中 进行。类中用关键字static修饰的数据成员叫做静态数 据成员。说明一个静态数据成员的方法与说明一个一 般静态变量一样,只不过前者是在一个类中说明。 静态数据成员的使用方法如下: (1)静态数据成员的定义与一般数据成员相似, 但前面要加上static关键词。 (2)静态数据成员的初始化与一般数据成员不同, 静态数据成员初始化的格式如下: ::=; (3)在引用静态数据成员时采用格式: ::

C++程序设计 湖南大学 杜四春、银红霞 class Classl i int a static int b Jcl, c2 int Classl: b 类 Class1中包含两个数据成员a和b,其中a为一般 数据成员,在对象c1和c2中都存在有各自的该数据成 员的副本;而b是静态数据成员,所有类 Class的对象 中的该成员实际上是同一个变量。C艹编译器将静态 数据成员存放在静态存储区,该存储区中的所有数据 为类的所有对象所共享
C++程序设计 湖南大学 杜四春、银红霞 class Class1 { int a; static int b; //… }c1,c2; int Class1::b; 类Class1中包含两个数据成员a和b,其中a为一般 数据成员,在对象c1和c2中都存在有各自的该数据成 员的副本;而b是静态数据成员,所有类Class1的对象 中的该成员实际上是同一个变量。C++编译器将静态 数据成员存放在静态存储区,该存储区中的所有数据 为类的所有对象所共享

C++程序设计 湖南大学 杜四春、银红霞 10.1.2静态成员函数 静态成员函数的定义和其他成员函数一样。但在 说明时需注意静态成员函数不得说明为虚函数。静态 成员函数与静态数据成员类似,也是从属于类,静态 成员函数的定义是在一般函数定义前加上 static关键字。 调用静态成员函数的格式如下 ::(); 静态成员函数与静态数据成员一样,与类相联系, 不与对象相联系,只要类存在,静态成员函数就可以 使用,所以访问静态成员函数时不需要对象。如果用 对象去调用静态成员函数,只是用其类型
C++程序设计 湖南大学 杜四春、银红霞 10.1.2 静态成员函数 静态成员函数的定义和其他成员函数一样。但在 说明时需注意静态成员函数不得说明为虚函数。静态 成员函数与静态数据成员类似,也是从属于类,静态 成员函数的定义是在一般函数定义前加上static关键字。 调用静态成员函数的格式如下: ::(); 静态成员函数与静态数据成员一样,与类相联系, 不与对象相联系,只要类存在,静态成员函数就可以 使用,所以访问静态成员函数时不需要对象。如果用 对象去调用静态成员函数,只是用其类型

C++程序设计 湖南大学 杜四春、银红霞 静态成员函数只能访问静态数据成员、静态成员 函数和类以外的函数和数据,不能访问类中的非静态 数据成员(因为非静态数据成员只有对象存在时才有 意义)。但静态数据成员和静态成员函数可由任意访 问权限许可的函数访问。和一般成员函数类似,静态 成员函数也有访问限制,私有静态成员函数不能由外 界访问。 静态成员函数没有this指针,因此,静态成员函数 只能直接访问类中的静态成员,若要访问类中的非静 态成员时,必须借助对象名或指向对象的指针
C++程序设计 湖南大学 杜四春、银红霞 静态成员函数只能访问静态数据成员、静态成员 函数和类以外的函数和数据,不能访问类中的非静态 数据成员(因为非静态数据成员只有对象存在时才有 意义)。但静态数据成员和静态成员函数可由任意访 问权限许可的函数访问。和一般成员函数类似,静态 成员函数也有访问限制,私有静态成员函数不能由外 界访问。 静态成员函数没有this指针,因此,静态成员函数 只能直接访问类中的静态成员,若要访问类中的非静 态成员时,必须借助对象名或指向对象的指针

C++程序设计 湖南大学 杜四春、银红霞 10.2友元 友元提供了在不同类的成员函数之间、类 的成员函数与一般函数之间进行数据共享的机 制。通过友元,一个普通函数或另一个类中的 成员函数可以访问类中的私有成员和保护成员 友元的正确使用能提高程序的运行效率,但破 坏了类的封装性和数据的隐蔽性。 1021友元函数 定义友元函数的方式是在类定义中用关键词 friend 说明该函数,其格式如下: friend();
C++程序设计 湖南大学 杜四春、银红霞 10.2 友元 友元提供了在不同类的成员函数之间、类 的成员函数与一般函数之间进行数据共享的机 制。通过友元,一个普通函数或另一个类中的 成员函数可以访问类中的私有成员和保护成员。 友元的正确使用能提高程序的运行效率,但破 坏了类的封装性和数据的隐蔽性。 10.2.1 友元函数 定义友元函数的方式是在类定义中用关键词friend 说明该函数,其格式如下: friend ();

C++程序设计 湖南大学 杜四春、银红霞 友元函数说明的位置可在类的任何部位,既可在 public区,也可在 protected区,意义完全一样。友元函 数定义则在类的外部,一般与类的成员函数定义放在 起 类的友元函数可以直接访问该类的所有成员,但 它不是成员函数,可以像普通函数一样在任何地方调 用。友员函数的定义方法是在类的任何地方象定义其 他函数一样定义该函数,并在其前面加上关键字 friend即 可。友员函数虽然在类内定义,但它不是这个类的成 员函数,它可以是一个普通函数,也可以是其他类的 成员函数,在其函数体中通过对象名访问这个类的私 有或保护成员
C++程序设计 湖南大学 杜四春、银红霞 友元函数说明的位置可在类的任何部位,既可在 public区,也可在protected区,意义完全一样。友元函 数定义则在类的外部,一般与类的成员函数定义放在 一起。 类的友元函数可以直接访问该类的所有成员,但 它不是成员函数,可以像普通函数一样在任何地方调 用。友员函数的定义方法是在类的任何地方象定义其 他函数一样定义该函数,并在其前面加上关键字friend即 可。 友员函数虽然在类内定义,但它不是这个类的成 员函数,它可以是一个普通函数,也可以是其他类的 成员函数,在其函数体中通过对象名访问这个类的私 有或保护成员
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 湖南大学:《C++程序设计》目录.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 东北大学:《离散数学》课程教学资源(试题)2001级总本.doc
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第二章 谓词逻辑.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)绪论、第一章 命题逻辑(主讲:许桂清).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)期末总复习(各章复习).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 排序.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第八章 图.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 集合与拽索.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树与森林.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 递归.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第四章 栈与队列.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 链表.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 数組.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第十章 搜象与散列.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)上机实验一进程控制与描述.ppt
- 湖南大学:《C++程序设计》第11章 继承和派生类.ppt
- 湖南大学:《C++程序设计》第12章 模板.ppt
- 湖南大学:《C++程序设计》第13章 多态性与虚函数.ppt
- 湖南大学:《C++程序设计》第14章 I/O流.ppt
- 湖南大学:《C++程序设计》第15章 异常处理.ppt
- 湖南大学:《C++程序设计》第16章 C++程序设计实例.ppt
- 湖南大学:《C++程序设计》第1章 绪论.ppt
- 湖南大学:《C++程序设计》第2章 数据类型和表达式.ppt
- 湖南大学:《C++程序设计》第3章 控制语句.ppt
- 湖南大学:《C++程序设计》第4章 函数.ppt
- 湖南大学:《C++程序设计》第5章 数组.ppt
- 湖南大学:《C++程序设计》第6章 指针.ppt
- 湖南大学:《C++程序设计》第7章 结构体与共用体.ppt
- 湖南大学:《C++程序设计》第8章 类和对象.ppt
- 湖南大学:《C++程序设计》第9章 运算符重载.ppt
- 《计算机等级四级综合模拟试题》第三部分综合模拟试题.pdf
- 《微机原理与接口技术》课程教学资源(PPT电子教案)第一章 基础知识、第二章 IBM—PC计算机组织、第三章 寻址方式与指令系统.ppt
- 《网络数据库》期末考试题(a).doc
- 《网络数据库》例题说明.doc
- 《网络数据库》第九章 服务器端开发技术.ppt