- 1、本文档共115页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章类和对象课件1.ppt
static const数据成员 可以用static const定义类中的常量 static const数据成员的初始化也在类外 标准C++允许在类定义里初始化整值类型的static const但其他类型不能在类中初始化 class Account { static double rate; double amount; static const int nameSize; char name[nameSize]; public:……}; const int Account::nameSize = 16; //初始化 /*******************************************/ class Account { static const int nameSize = 16; //OK static const char name[nameSize] = “Savings Account”; ……}; 静态数据成员的访问 在类的成员函数中可以直接访问静态数据成员,不必使用成员访问操作符。 在非成员函数中,可以以两种方式访问静态数据成员 成员访问操作符:像访问普通数据成员的语法一样,通过对象或指针来访问。 类名限定修饰的名字:因为静态成员只有一个拷贝,所以不一定要通过对象或指针访问。可以直接用类名字限定修饰的名字访问。 静态数据成员的访问 class Account { static double rate; …… friend void f(Account acc); }; void f(Account acc){ //OK:成员访问语法 acc.rate = 0.025; //OK:类名字限定访问 Account::rate = 0.025; } static成员函数 一般需要通过成员函数来访问数据成员 成员函数也可以访问静态数据成员 普通成员函数必须通过类的对象或指针调用,而静态数据成员并不依赖对象存在 如果成员函数只访问静态数据成员,那么用哪个对象来调用这个成员函数都没有关系,因为调用的结果不会影响任何对象的非静态数据成员 可以将这样的成员函数声明为静态成员函数 staic成员函数 静态成员函数的声明是在类体中的函数声明前加static关键字 不能将静态成员函数声明为const或volatile,其余与非静态成员函数相同 在类外定义静态成员函数时不需要再加关键字static class Account { static double rate; public: static void raiseRate(double inc){ rate += inc; } static void interestRate(){ return rate; } }; static成员函数 静态成员函数可以用成员访问语法调用,也可以直接用类名限定修饰名直接调用静态成员函数。 Account acc; acc.interestRate(); Account::raiseRate(0.01); 静态成员函数没有this指针,在静态成员函数中显式或隐式地引用this指针都会引起编译错误。 因此,静态成员函数中不能访问非静态数据成员,也不能调用非静态成员函数。 单件模式(Singleton) 单件模式是设计模式中的一种,保证一个类仅有一个实例。 利用访问限定与static成员,可以实现单件模式 将构造函数用private限定,保证在类的外部就无法创建实例 使用一个静态成员函数在类内部产生实例并返回其指针 类的使用者调用成员函数获得这个唯一实例的指针,通过指针间接操作对象 程序5.21 单件模式 static用法小结 定义函数内部的静态变量,改变变量的存储期 在函数内部定义一个static对象,该对象的作用域局限在该函数体内,但是对象将被存储于静态数据区中,而不是在栈内。这个对象只在函数第一次调用时初始化一次,以后它将在多次函数调用之间保持它的值 限制名字的可见性 在源文件中声明为static的对象或函数名字仅对当前编译单元可见。这些名字是内部链接的 限定数据成员 限定成员函数 5.6 指向成员的指针 指针是保存内存地址的变量,既可以是数据的地址也可以是函数的地址 C++的成员指针遵从同样的概念,只是指向的是类的成员 这里有一个问题,所有的指针都保存地址,而类内部的成员是没有地址的,只有把成员在类中的偏移和具体对象的起始地址结合在一起才能得到实际的地址 应该如何定义和使用指向成员的指针呢? 指向数据成员的指针 使用数据成员指针的语法 如果有一个指向类成员的指针p,要取得指针指向的内容,必须用“*”运算符解引用 *p是一个类的成员,不能直接使用,必须指定对象
文档评论(0)