您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第七章 类的概念与定义(二)
IC-MSP2.0C++程序设计IC-MSP2.0第7章类的概念与定义类的静态成员和常量成员友元类运算符重载友元类类的静态成员和常量成员运算符重载理解类的静态成员和常量成员理解友元类掌握运算符重载IC-MSP2.07.2C++语言中的类加了“static”关键字,则此成员就是静态成员。静态成员可以是静态数据成员和静态函数成员。7.2.1静态成员和常量成员1.静态成员的概念及使用classperson{public:staticintpersonCount;staticintGetPersonCount(){returnpersonCount;}};类的静态成员为其所有对象所共享,不管有多少对象,静态成员只有一份存于公用内存中。第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用类的静态成员为其所有对象所共享,不管有多少对象,静态成员只有一份存于公用内存中。在类中说明的静态数据成员属于引用性说明。类型类名::静态数据成员=初值;必须在类外文件作用域中的某个地方对静态数据成员按如下格式进行定义性说明第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用静态成员是属于类的。第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用静态成员的访问方法:静态成员可以不通过对象访问,而是通过类访问,即使没有创建任何对象:coutp.getx()q.gety();coutpoint::gety();第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用静态关键字用于声明:局部静态变量全局静态变量具有静态存储类别的函数类的静态数据成员类的静态函数成员第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用1)局部静态变量函数或块的内部说明的静态变量作用域仅局部于函数或块2)全局静态变量在所有函数的外部说明具有单文件级全局性的静态变量第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用3)静态函数具有静态存储类别的函数(有时也称为内部函数)只能在本文件的内部被调用在其他文件中不能调用这种函数4)类的静态数据成员static修饰的类中的数据成员。为该类的所有对象所共享第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员1.静态成员的概念及使用静态数据成员静态成员函数非静态数据成员非静态成员函数5)类的静态函数成员由关键字static修饰的类中的函数成员类的静态函数成员没有this指针通常只在其中处理类的静态数据成员值x√√√第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员2.常量成员加了“const”关键字,则此成员就是常量成员。常量数据成员只能在对象被说明时通过构造函数的成员初始化列表的方式来赋初值一旦对象被创建,其常量数据成员的值就不允许被修改第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.1静态成员和常量成员2.常量成员常量函数成员类的函数成员也可以被说明为常量类型。常量类型的函数成员只有权读取相应对象(即调用者对象*this)的内容,但无权修改它们。类型说明符函数名(参数表)const;修饰符const要加在函数说明的尾部(若放在首部的话,则是对函数值的修饰),它是函数类型的一部分。第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.2友元函数和友元类1.友元的性质和作用面向对象程序设计主张程序的封装,数据的隐藏友元的概念是C++语言为用户提供的在局部打破这种封装和隐藏的手段friend说明友元位于一个函数说明语句之前,指出该函数为这个类的友元函数;位于一个类名之前,指出该类是这个类的友元类。第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.2友元函数和友元类1.友元的性质和作用在类A中说明的友元的特点:1)它不是A的函数成员;2)f的定义可以在类A的说明内,也可以在类外;3)函数f虽不是A的成员,但有权访问和调用A的所有私有及保护成员。classA{…friendintf(inta);…friendclassB;…};第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.2友元函数和友元类1.友元的性质和作用在类A中说明的友元类B如下所示:1)它可能是与A无关的另外一个类;2)要在类外说明;3)B的任一函数都有权访问和调用类A的所有成员,包括私有及保护成员。第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.2友元函数和友元类1.友元的性质和作用友元的特点:1)“单方向”2)“不继承”3)“不传递”ClassBClassCClassA??ClassD:publicB第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.2友元函数和友元类2.友元的使用classcomplex{//自定义的复数类型complexdoublereal;//复数实部doubleimag;//复数虚部public:complex();//无参构造函数complex(doubler,doublei);//2参构造函数friendcomplexaddCom(complexc1,complexc2);friendvoidoutCom(complexc);//友元函数,输出complex类对象c的有关数据(各分量)};第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.3运算符重载1.运算符重载的使用范围C++语言规定,大多数运算符都可以重载。单目运算运算符类型表示符算术运算-位运算~,!自增,自减运算++,--内存操作运算new,delete第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.3运算符重载1.运算符重载的使用范围双目运算运算符类型表示符算术运算+,-,*,/,%位运算&,|,^,,逻辑运算&&,||关系运算==,!=,,=-,,=赋值运算=赋值运算+=,-=,*=,/=,%=赋值运算^=,&=,|=,=,=逗号运算,I/O运算,其他(),[]第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.3运算符重载1.运算符重载的使用范围前缀++:类型operator++()//作为类成员类型operator++(类型)//作为类外函数后缀++:类型operator++(int)//作为类成员类型operator++(类型,int)//作为类外函数第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.3运算符重载2.运算符重载函数的定义booloperator+(boola,boolb){if((a==FALSE)&&(b==FALSE))returnFALSE;returnTRUE;}booloperator*(boola,boolb){if((a==TRUE)&&(b==TRUE))returnTRUE;returnFALSE;}booloperator-(boola){if(a==FALSE)returnTRUE;returnFALSE;}第7章类的概念与定义IC-MSP2.07.2C++语言中的类7.2.3运算符重载3.重载运算符的调用运算符重载函数的调用有以下3种方式:1)与原运算符相同的调用方式,如b1+b2,b1*b2等;2)一般函数调用方式,如b1+b2,也可以写为operator+(b1,b2)被重载的运算符的调用方式,优先级和运算顺序都与原运算符一致,其运算分量的个数也不可改变;3)运算符重载主要用于用类的形式定义的用户定义类型第7章类的概念与定义IC-MSP2.0小结本章主要讲解C++面向对象基础知识类的静态成员和常量成员友元类运算符重载第7章类的概念与定义IC-MSP2.0自测题1.C++只能做面向对象的程序开发,而不能做面向过程的程序开发。()2.析构函数和构造函数都是可以重载的。()3.类中的数据成员默认类型为私有。()4.友员函数不能直接访问类中的私有成员,只能通过对象访问私有成员。()第7章类的概念与定义IC-MSP2.0自测题1.C++只能做面向对象的程序开发,而不能做面向过程的程序开发。(X)2.析构函数和构造函数都是可以重载的。(X)3.类中的数据成员默认类型为私有。(√)4.友员函数不能直接访问类中的私有成员,只能通过对象访问私有成员。(√)第7章类的概念与定义IC-MSP2.0课后作业【作业1】.编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩和英语成绩,求各门功课的平均分。要求设计不同的成员函数求出各门课程的平均分,并使用成员函数指针调用它们。【作业2】.设计一个类Sample,实现两个复数的乘法运算。第7章类的概念与定义
本文标题:第七章 类的概念与定义(二)
链接地址:https://www.777doc.com/doc-3109158 .html