下载此文档

ch11 数据共享和成员特性.ppt


文档分类:IT计算机 | 页数:约40页 举报非法文档有奖
1/40
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/40 下载此文档
文档列表 文档介绍
第11章 数据共享和成员特性
2017/12/26
目录
静态成员
友元
成员其他特性
this指针
综合应用实例
2
C++实用教程
如果类的某些属性希望他的所有对象共享,怎么办?
数据共享途径:
途径一:全局变量或全局对象
具有局限性
破坏程序模块结构
属于程序,而不属于类
途径二:静态成员
静态成员
3
C++实用教程
静态成员
静态成员是类中的成员,是类的一部分,在类外不可访问,从而起到保护作用。
静态成员有静态数据成员和静态成员函数之分。
静态数据成员与静态变量相似,具有静态生存期,是在类中声明的全局数据成员,能被同一个类的所有对象所共享。
公有静态成员函数不仅可以通过类对象来访问,还可通过“类名::静态成员函数”的形式在程序中直接调用。
4
C++实用教程
静态数据成员
使用静态数据成员可以节省内存,因为它只存储一处,供所有对象共享。静态数据成员的值是可修改的,但它对每个对象都是一样的。
1. 定义和使用
与静态变量相似,静态数据成员是静态存储(static)的,它必须按下列两个步骤进行:
在类中使用关键字static声明静态数据成员。
在类外为静态数据成员分配内存空间并初始化。
其定义格式如下:
<数据类型><类名>::<静态数据成员名>=<值>
5
C++实用教程
[例Ex_StaticData] 静态数据成员的使用示例
#include <iostream>
using namespace std;
class CSum
{
public:
CSum(int a = 0, int b = 0) // A
{
nSum += a+b;
}
int getSum()
{
return nSum;
}
void setSum(int sum)
{
nSum = sum;
}
private:
static int nSum;
};
int CSum::nSum = 0;
int main()
{
CSum one(10, 2), two;
cout<<"one: sum = "<<()<<endl;
cout<<"two: sum = "<<()<<endl;
(5);
cout<<"one: sum = "<<()<<endl;
cout<<"two: sum = "<<()<<endl;
return 0;
}
6
C++实用教程
2. 几点说明
(1)静态数据成员是类中的成员,它的访问属性同普通数据成员一样,可以为public、private和protected。
(2)静态数据成员的实际定义和初始化本身是不受public、private和protected等访问属性限制的。
(3)静态数据成员可看成是类中声明、类外定义的静态全局变量,具有静态生存期,在程序中从实际定义时开始产生,到程序结束时消失。
(4)当静态数据成员为public时,在类外对该成员的访问和引用可通过对象,也可直接引用。
<类名>::<静态数据成员名>
7
C++实用教程
例:
class CSum
{
//…
public:
Static int nSum;
};
int CSum::nSum=0;
int main()
{
CSum one;
=10;
CSum::nSum=12;
cout<<<<endl;
return 0;
}
8
C++实用教程
静态成员函数
静态成员函数和静态数据成员一样,都属于类的静态成员,但它们都不专属于某个对象,而是所有对象所共享的成员。对公有(public)静态成员函数来说,除可用对象来引用外,也可通过“类名::成员”直接来引用。
在类中,静态数据成员可以被成员函数或静态成员函数所引用。但反过来,静态成员函数却不能直接引用类中说明的非静态成员。
9
C++实用教程
例:
class CSum
{
public:
static void ChangeData(int data)
{
nSum=data; //Error
}
public:
int nSum;
};
CSum::ChangData(5);
静态成员函数只能引用静态数据成员。
10
C++实用教程

ch11 数据共享和成员特性 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数40
  • 收藏数0 收藏
  • 顶次数0
  • 上传人changjinlai
  • 文件大小255 KB
  • 时间2017-12-26
最近更新