有关于类的定义赋值与调用总结收藏

上传人:平*** 文档编号:9306882 上传时间:2017-10-02 格式:DOC 页数:6 大小:110.15KB
返回 下载 相关 举报
有关于类的定义赋值与调用总结收藏_第1页
第1页 / 共6页
有关于类的定义赋值与调用总结收藏_第2页
第2页 / 共6页
有关于类的定义赋值与调用总结收藏_第3页
第3页 / 共6页
有关于类的定义赋值与调用总结收藏_第4页
第4页 / 共6页
有关于类的定义赋值与调用总结收藏_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《有关于类的定义赋值与调用总结收藏》由会员分享,可在线阅读,更多相关《有关于类的定义赋值与调用总结收藏(6页珍藏版)》请在金锄头文库上搜索。

1、有关于类的定义赋值与调用总结 收藏 本类的成员函数:定义: 类中声明: 返回值类型 函数名(参数表) ;/ 写了函数体就自动成为内联函数,这就是隐式声明。或者也可以不写,先在类中声明,在类外定义。类外定义: 返回值类型 类名:函数名(参数表) ; /前面加 inline 就表示内联函数,这是显式声明。调用:对象名.公有成员函数名(参数表) /在这里只能访问到类的公有成员例如: 类中声明: void SetTime( int, int , int ); 类外定义: inline void Clock:SetTime( int n, int s, int t ) Hour = h; Minute

2、= m; Second = s; myClock.SetTime()声明对象:定义: 类名 对象名;例如: Clock myClock;本类的构造函数:定义: 类中声明:类名(参数表); /可以利用重载,定义无参、有参的构造函数,赋初始值。类外定义:类名:类名(参数表)例如: Clock:Clock() Hour = 0; Minute = 0; Second = 0 / 无参的默认构造函数Clock:Clock( int h, int m, int s ) Hour = h; Minute = m; Second = s; / 有参的构造函数本类的拷贝构造函数:定义:类中声明:类名( 类名

3、&对象名); 类外定义:类名( 类名 &对象名) 类成员的初始化成员名= 对象名.成员名/其实系统会自动生成一个默认的,它把具有构造函数初始值的数据成员都复制到新建立的对象中,相当于克隆。如果自己定义的话,它其实就是使用一个已经存在的的对象,去初始化同类的一个新对象例如: Poine:Point( Point &p ) X = p.X; Y = p.Y; /注意这里是用参数表中的对象成员来初始化新对象使用: 类名 新对象( 旧对象 )例如: Point A ( B ); /此时被自动调用本类的析构函数:定义:类中声明:类名( ); 类外定义:类名: 类名 ( ) /注意:它无参数,函数体中做后

4、续工作例如:Clock() Poing() countP-; 组合类_构造函数:定义:类中声明:类名(形参表);类外定义:类名:类名(所有形参):内嵌对象(形参表) ,内嵌对象 (形参表). 利用子类对象进行母类的成员初始化 /其实很简单,在第一个形参表中将所有要用到的参数全部写全。然后在 :后面将内嵌对象都列出来,参数写上。在函数体中利用剩下的参数对剩下的母类成员赋值例如: Line( Point xp1, Point xp2 );Line:Line( Poine xp1, Point xp2 ):p1( xp1 ),p2( xp2 ) x = p1.GetX() p2.GeX(); len

5、 = sqrt( x * x ); 组合类_拷贝构造函数:定义:类中声明:类名( 类名 &对象名);类外定义:类名:类名( 类名 &对象名 ):内嵌对象(形参表) ,内嵌对象 (形参表). 利用子类对象进行母类的成员初始化 /与组合类 _构造函数的类似例如:Line: Line ( Line &L ) : p1 ( L.p1 ), p2 ( L.p2 ) len = L.len; 本类的静态数据成员:定义:类中声明:static 数据类型 标识符;类外赋值:数据类型 类名:标识符 = 值;/ 注意它不属于任何对象,只能在类外赋初值。并且它要通过非内联函数来访问调用:类名标识符例如:static

6、 int countP;int Point:countP = 0;本类的静态函数成员:定义:类中声明:static 返回值类型 函数名(参数表) ;类外定义:返回值类型 类名:函数名(参数表) ;/ 它一般用来访问本类的静态数据成员、静态函数成员调用:类名:函数名或者对象名.函数名例如:static void add() countP+; Point:add() ;Mypoint.add();类的友元函数:定义:类中声明:friend 返回值类型 函数名( 参数表) ;类外定义:返回值类型 函数名(参数表) ;/ 在类中用关键字 friend 修饰的非成员函数 ,在它的函数体中可以访问类的私有

7、和保护成员调用:函数名(参数表);例如:friend float Fdist( Point &, Point & );float Fdist( Point &p1, Point &p2 ) x = p1.X p2.X; y = p2.Y p2.Y; return sqrt ( x*x + y*y ); 类的友元类:定义:类中声明:friend class 友类名; /友类的所有函数都可以访问本类的私有和保护成员 ,但这种关系非传递、单向、非继承的例如:friend class A;类的对象指针:定义: 类名*对象指针名;访问: 对象指针名-成员名( 参数)或者( *对象指针名).成员名(参数)

8、例如: Point p1;/ 先初始化类对象Point *p_point; /再定义类的对象指针p_point = &p1 /再赋值p1-GetX();/ 最后使用,就有如通过对象名访问一样动态创建对象:定义及赋值:类名 *对象指针名;赋值: 对象指针名 = new 类名(构造函数参数表 );定义/赋值:类名 *对象指针名 = new 类名(构造函数参数表);访问: 对象指针名-成员名( 参数)或者( *对象指针名).成员名(参数) / 和上面一样销毁: delete 对象指针名例如: Point *Ptr = new Point1( 1, 2 )Delete Ptr类的对象数组:定义:类名数

9、组名下标表达式;调用:数组名下标. 成员函数(参数表); /要记得是下标从开始计算,创建时用默认的构造函数来创建,此时初始值就派上了用场例如:Point A2;A0.Move( i+10, i+20 ); 动态创建对象数组:定义及赋值:类名 *对象指针名 = new 类名下标表达式 调用:对象指针名下标.成员函数(参数表)销毁:delete 对象指针名例如:Point *Ptr = new Point2Ptr2.Move( 5, 10 )Delete Ptr指向类的非静态数据的指针:(公有)定义:类型说明符类名: *指针名;赋值:指针名=&类名:数据成员名;定义/赋值: 类型说明符类名: *指

10、针名=&类名:数据成员名/ 要找到成员的地址,就要有 &号访问: 对象名.*类成员指针名 或者对象指针名- *类成员指针名例如: int Test:*vprt = &Test:value; / 声明和初始化 vPtr 为 Test 类 int 型数据成员的指针( *prt).*vptr /( *prt)是对象指针名的另一个用法指向类的非静态函数的指针:(公有)定义: 类型说明符(类名: *指针名) (参数);赋值: 指针名=&类名:函数成员名;定义/赋值:类型说明符(类名: *指针名) (参数) = &类名: 函数成员名/ 注意与上面的对比 . 类的非靜态成员函数编译器是需要重新改写的,以加入

11、对 this 的支持也就是说你看到的函数原型非不是最终的函数原型,所以它的指针就还有另外一个特性,即它所属的类。但是类的静态成员就不同,它没有 this, 和普通函数一样访问: (对象名.类成员指针名)(参数表) 或者(对象指针名- *类成员指针名)(参数表)例如:int ( Point: *p_GetX) () = &Point:GetX(); (A. *p_Getx) ()(p1- *p_GetX) ();指向类的静态数据的指针:定义/赋值: 类型说明符 *指针名=&类名:静态数据成员名 / 与非静态成员相比,少了类名 .有没有这种静态的指针都无所谓,因为它就是个普通类型的指针访问:*指针名例如:int *count = &Point:countP;*count指向类的静态函数的指针:定义及赋值:类型说明符 (*指针名)(参数)=&类名:函数名 /静态类成员函数的指针是普通类型指针访问:指针名(参数)例如:void (*gptr)() =& Point:GetC;gptr();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号