- 1、本文档共122页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 正确的程序 class Fred; //前向引用声明 class Barney { Fred *x; }; class Fred { Barney y; }; 指 针 * this指针 隐含于每一个类的成员函数中的特殊指针。 明确地指出了成员函数当前所操作的数据所属的对象。 当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。 指 针 * this指针 例如:Point类的构造函数体中的语句: X=xx; Y=yy; 相当于: this-X=xx; this-Y=yy; 指 针 * 指向类的非静态成员的指针 通过指向成员的指针只能访问公有成员 声明指向成员的指针 声明指向公有数据成员的指针 类型说明符 类名::*指针名; 声明指向公有函数成员的指针 类型说明符 (类名::*指针名)(参数表); 指 针 * 指向类的非静态成员的指针 指向数据成员的指针 说明指针应该指向哪个成员 指针名=类名::数据成员名; 通过对象名(或对象指针)与成员指针结合来访问数据成员 对象名.* 类成员指针名 或: 对象指针名—*类成员指针名 指 针 * 指向类的非静态成员的指针 指向函数成员的指针 初始化 指针名=类名::函数成员名; 通过对象名(或对象指针)与成员指针结合来访问函数成员 (对象名.* 类成员指针名)(参数表) 或: (对象指针名—*类成员指针名)(参数表) 指 针 * 指向类的非静态成员的指针 例6-13 访问对象的公有成员函数的不同方式 int main() //主函数 { Point A(4,5); //声明对象A Point *p1=A; //声明对象指针并初始化 //声明成员函数指针并初始化 int (Point::*p_GetX)()=Point::GetX; //(1)使用成员函数指针访问成员函数 cout(A.*p_GetX)()endl; //(2)使用对象指针访问成员函数 cout(p1-GetX)()endl; //(3)使用对象名访问成员函数 coutA.GetX()endl; } 指 针 * 指向类的静态成员的指针 对类的静态成员的访问不依赖于对象 可以用普通的指针来指向和访问静态成员 例6-14 通过指针访问类的静态数据成员 例6-15 通过指针访问类的静态函数成员 指 针 * 例6-14通过指针访问类的静态数据成员 #include iostream using namespace std; class Point //Point类声明 {public: //外部接口 Point(int xx=0, int yy=0) {X=xx;Y=yy;countP++;}//构造函数 Point(Point p); //拷贝构造函数 int GetX() {return X;} int GetY() {return Y;} static int countP; //静态数据成员引用性说明 private: //私有数据成员 int X,Y; }; Point::Point(Point p) { X=p.X; Y=p.Y; countP++; } int Point::countP=0; //静态数据成员定义性说明 指 针 int main() //主函数 { //声明一个int型指针,指向类的静态成员 int *count=Point::countP; Point A(4,5); //声明对象A coutPoint A,A.GetX(),A.GetY(); //直接通过指针访问静态数据成员 cout Object id=*countendl; Point B(A); //声明对象B coutPoint B,B.GetX() ,B.GetY(); //直接通过指针访问静态数据成员 cout Object id=*countendl; } * * 例6-15通过指针访问类的静态函数成员 #include iostream using namespace std; class Point //Point类声明 { public: //外部接口 //其他函数略 static void GetC() //静态函数成员 { cout Object id=countPendl; } private: //私有数据成员 int X,Y;
您可能关注的文档
- 2012届浙江湘教版学海导航新课标高中总复习(第1轮)地理:模块1必修1第3章第4课常见的热力环流及其成因2 .ppt
- 2012同方专转本教材-江苏专转本英语要求(转本开始) .ppt
- 2013广西会计电算化实务操作练习题及答案.ppt
- 2013化学一轮复习课件:第七章+第1讲+开发利用金属矿物和海水资源 .ppt
- 2013届高考化学9总复习课件9.ppt
- 2013届高三年级第二次调研测试卷 .ppt
- 2013届数学(理)第一轮第2章+第14讲+幂函数.ppt
- 2013届数学(理)第一轮第2章第9讲函数的单调性.ppt
- 2013届数学(理)第一轮第2章第16讲函数模型及其应用.ppt
- 2013届数学(理)第一轮第3章+第23讲+直接证明与间接证明.ppt
文档评论(0)