面向对象编程技术oop.ppt
为指针对象引入的两种操作*-----取地址操作-----目标操作****6.2数组和指针*数组:一组类型相同的对象声明语法:类型 标识符[元素个数];数组元素可以用下标引用数组名[index];数组元素也可以用指针引用数组和指针*通过指针引用数组元素定义指针对象数组的地址赋值给指针对象。指针引用数组元素的方法(pointer+n)pointer[n]对象数组*没有为数组指定显式初始值时,数组元素使用缺省值初始化,当定义对象数组时,类中必须定义一个缺省的构造函数。举例*6.3引用*是标识对象的一种机制(是对象的一个别名)01一般用作参数类型、函数返回类型。02一般语法如下:基本类型标识符03一个引用不是独立的对象,只是对另一个对象的引用。基本类型标识符=对象;04*栈对象与堆对象*在程序运行中根据需要在堆内存中创建的对象,使用完成后随时被删除。1创建语法如下:T*ptr=newT(初始值列表);2删除语法如下:deleteptr;3数组对象的创建int*ptr=newint[10];4数组对象的删除delete[]ptr;5***6.4指针数组*数组元素的类型是指针,这样的数组称指针数组。1语法:T*标识符[元素个数];2多维数组与指针*多维数组可以解释为其元素是多维数组的一维数组。6.5this指针*一个成员函数被调用时,被自动传递一个隐含的参数,该参数是一个指向正被该函数操作的对象的指针,在程序中可以用this引用它,因此称其为this指针。6.6具有子对象的类类型*01用内部包含子对象的类实现复杂的类02子对象的初始化***4.2类的实例化--对象的实现*一般语法:类标识符对象标识符;可以声明多个对象,对象之间代码共享,数据独立。可使用对象名引用对象的公有成员函数。方法如下:对象名.成员函数名(参数列表);4.2类的实例化--对象的实现*成员函数所操作的数据成员是该类的某个对象的数据成员。举例*2类的实例化--对象的实现4.3构造函数和析构函数*构造函数的作用是在对象被创建时使用特定的值构造对象(初始化)。析构函数的作用是在对象被删除时做一些清理工作。构造函数与类同名。析构函数是类名前加~两者无返回类型,析构函数无参数。321454.3构造函数和析构函数*举例4.3构造函数和析构函数*4.3构造函数和析构函数*4.4成员函数的内联实现*函数体放在类体外,使用inline关键字。函数体放在类体内。BA4.4成员函数的内联实现**4.5带缺省参数值的成员函数和成员函数重载#includeiostream.hclassLocation{public: Location(intx=0,inty=0); voidMove(intx=5,inty=5); voidValueX(intx); intValueX(); voidValueY(inty); intValueY();private: voidSet(intx,inty); intX,Y;};*4.5带缺省参数值的成员函数和成员函数重载Location::Location(intx,inty){Set(x,y);}voidLocation::Move(intx,inty){Set(x,y);}voidLocation::ValueX(intval){X=val;}intLocation::ValueX(){returnX;}voidLocation::ValueY(intval){Y=val;}intLocation::ValueY(){returnY;}voidLocation::Set(intx,inty){X=x;Y=y;}4.5带缺省参数值的成员函数和成员函数重载intmain(){ LocationA,B;//LocationA(0,0),B(0,0)A.Move();//A.X和A.Y被设为5A.ValueX(15);//A.X=15coutA.ValueX()A.ValueY()endl;B.Move(6,2);//B.X=6,B.Y=2B.ValueY(4);