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)在引用静态数据成员时采用格式: <类名>::<静态数据成员>