
这种状况不会导致子类的初始化,因为针对静态数组,只有直接定义静态泛型的类能够被触发初始化,子类不是定义这个静态数组的类,自然不能被实例化如果头文件也是像c语言一样定义变量,你只应该在全局main函数所在的文件中包括进来就行,如果头文件是定义一个类(包括类中所有成员、及构造函数析构函数等),你就只应该在必须建立该类的示例的cpp文件中包括这个文件,其它的cpp文件不需要再包括了
静态数据成员的种类之一是统计有多少甘存在。
静态数据成员不能在类中朝,实际上类定义也是在描识图,在其中指定城不禁止的。也不能在类的构造函数中朝该成员,也态数据成员为类的冈享c 类 static 函数,房次创建一改对喜态数据成员都应被再次朝。
静态成员不可在类体内进行赋值,尹是被所有该类的对喜享的。你在一帮它赋值,其他对夏该成员也会出现差异。为了防止混乱,所以不可在类体内进行赋值。
静态成员的值对所有的对匣样的。静态成员可以被朝,但没法在类体外进行朝。
一般形式:
数据类别类名::静态数据成员名=矪R>注意:不能用参数朝表对静态成员朝。一般平台缺省唱0。
静态成员是类所有的对喜享的成员,而不是某干员。它在对匣占用内存空间,这冈为整根共有,不饰何一稿对嚣以静态成员不能在类的外部朝,比如声铭类,其中一副为学生总数,钥就必须声貌态变量,应该按照实际需氰置成员变量。
复制代码 代码如下:
#include "iostream"
using namespace std;
class test
{
private:
int x;
int y;
public:

static int num;
static int Getnum()
{
x+=5; // 这行代码是错维静态成员变量不能登静态数据成员,要借助类的对希
num+=15;
return num;
}
};
int test::num = 10;
int main(void)
{
test a;
cout<<test::num<<endl; //10
test::num = 20;
cout<<test::num<<endl; //20
cout<<test::Getnum()<<endl; //35
cout<<a.Getnum()<<endl; //50

system("pause");
return 0;
}
通过下例可知: x+=5; // 这行代码是错蜝R>静态函数成员需要借助对洗访问非静态数据成员。
另外,静态成员变量在类内实现时弘加static关键字,非错危
揉的体外来实现下是脯成员变量,不能加static关键字,这样写就可以了:
复制代码 代码如下:
int test::Getnum()
{
.........
}
1、static成员的所有者是类原本跟对汐是多有对闲一样的静态成员。从而在定义对匣可借助构造函数对其进行朝。
2、静态成员不能在类定义里面朝,只能在class body外朝。
3、静态成员虽然譽blic,private,protected访问准?P>
4、静态成员变量没有this指针,它不能返回非静态成员,引了对宵外,类原本也可以担
2. 全局数组可被各个变量访问, 所以通常用于释放数据. 静态局部函数只能被定义它的变量访问, 一般用于保存特定数据.第1章简介1.1 什么是自动化测试1.2 自动化测试步骤1.3 什么是hp quicktestprofessional1.4 开始使用qtp1.4.1 从hp网站下载qtp1.4.2 安装qtp1.5 qtp许可证模式第2章qtp帮助文档的使用2.1 目录标签2.1.1 对象属性通过getroproperty函数返回2.1.2 测试对象提供的方式2.2 索引标签2.3 搜索标签第3章对象库3.1 对象是怎么被添加至对象库的3.2 测试对象跟运行时对象3.2.1 to属性3.2.2 对象库路径3.2.3 每个action对应的公共对象库3.3 对象探测器3.4 对象识别3.5 用户定义的对象第4章数据池4.1 设计时和运行时数据表4.2 何时使用全局数据表以及局部数据表4.3 设置数据池的降维4.4 数据池对象建模4.5 数据池的格式第5章操作组件5.1 输入和输出参数5.2 操作组件的类别5.2.1 inserting calls to actions5.2.2 insert call to new…5.2.3 insert call to existing…5.2.4 insert call to copy…第6章qtp环境数组6.1 环境变量的类别6.2 environment对象第7章保留对象7.1 crypt对象7.2 optionalstep对象7.3 pathfinder对象7.4 randomnumber对象7.5 setting对象7.6 webutil对象7.7 systemutil对象7.8 registeruserfunc对象第8章检查点8.1 检查点的类别8.2 qtp内嵌检查点的问题8.3 检查点的代替原则8.4 运行时升级检测点第9章库函数文件9.1 关联一个全局库函数文件9.2 运行时动态读取本地库函数文件9.3 运行时动态读取全局库函数文件9.4 理解执行作用域9.5 option explicit的适用性9.6 全局作用域内执行本地作用域代码第10章描述性编程10.1 对象识别10.2 何时使用描述性编程10.3 描述性编程词汇10.3.1 使用表述对象10.3.2 micclass标识符10.4 使用表述字符串10.5 列举childobjects10.6 将基于对象库的类库转换成基于描述性编程的类库10.7 使用vbscript描述性编程对象库10.8 index标识符问题10.9 多浏览器应用10.10 浏览器识别问题10.10.1 使用opentitle识别浏览器10.10.2 使用唯一的openurl属性识别浏览器第11章qtp的安装功能11.1 打开调试配置项11.2 断点的使用11.3 watch tab页的使用11.4 variables tab页的使用11.5 command tab页的使用第12章场景恢复12.1 什么时候场景恢复无法使用12.2 各种情景恢复无法工作的状况12.3 针对ie验证窗口的场景恢复处理12.4 qtp各种默认场景恢复12.5 recovery对象12.6 场景恢复函数读取12.7 错误处理第13章正则表达式13.1 正则表达式字符13.2 何时在qtp中使用正则表达式13.3 使用代码验证正则表达式13.3.1 使用正则表达式选择weblist或webradiogroup的值13.3.2 使用正则表达式提取信息13.3.3 使用正则表达式替换数据第14章vbscript14.1 字符串14.2 转换函数14.3 日期和时间函数14.5 其他变量14.5.1 typename14.5.2 vartype14.5.3 getref14.5.4 createobject14.5.5 getobject14.6 使用函数14.6.1 定长数组14.6.2 动态数组14.6.3 执行语句14.6.4 eval函数14.6.5 vbscript可选参数第15章同步点15.1 同步点15.2 检查对象的存在15.3 事件15.4 回放体系第16章测试结果16.1 在结果报告中过滤方法16.2 报告自定义测试步骤16.3 在检测结果中插入文件16.4 在检测结果中插入快照16.5 转化xml结果为html格式16.6 配置qtp生成html结果报告16.7 qtp reporter对象16.8 在脚本最后访问测试结果第17章api应用17.1 extern对象17.1.1 vb api定义语法17.1.2 qtp api定义17.2 qtp api的限制17.2.1 使用vb6的api com对象17.3 通过excel执行api17.4 动态生成excel宏17.5 使用方式对话框第18章qtp自动化对象建模18.1 qtp自动化对象建模18.2 传递参数给检测用例18.2.1 使用测试参数18.2.2 传递测试参数第19章html dom19.1 何时需要使用html dom19.2 何时不宜使用html dom19.3 html dom对象集19.3.1 html结点19.3.2 document对象19.3.3 html元素对象19.3.4 html元素集19.3.5 使用dom获取web页面的元素19.4 其他html元素19.5 转化dom对象为qtp测试封装对象19.6 使用材质表单验证外观19.7 通过文本选取单选框第20章webtables应用20.1 webtables20.2 访问webtable20.2.1 使用index20.2.2 使用name或html id20.2.3 使用innertext/outertext20.2.4 使用对象库20.2.5 使用table中的对象20.2.6 获取table中对象的位置20.3 点击webtable内部20.4 table的轮询读取20.5 导出webtable数据到datatable20.6 webtable功能扩展20.6.1 通过dom元素中获取table20.6.2 搜索查找table中的单元格第21章xml应用21.1 qtp xml对象21.2 读取和设置xml21.3 处理应用程序的多个环境数组文件21.4 输出xml到数据表21.5 比较xml第22章应用22.1 连接一个22.2 构建连接字符串22.2.1 连接向导22.2.2 检查连接对象以及结果集对象的状况22.3 将查询结果导入datatable22.4 执行存储过程第23章microsoft excel应用23.1 excel自动化对象建模23.2 将vba转换为vbscript第24章outlook应用24.1 outlook对象建模24.1.1 连接outlook应用程序24.1.2 登录到名称空间24.1.3 遍历顶级文件夹24.1.4 用户交互式的获取文件夹24.1.5 获取默认文件夹24.2 读取短信消息24.2.1 访问电子邮件的消息属性24.2.2 下载附件24.3 发送电子邮件消息24.4 outlook安全对话框24.5 从电子邮件消息中获取地址24.6 点击在电子邮件消息中的链接24.7 使用电子邮件触发qtp第25章microsoft word应用word自动化对象建模第26章microsoft ie应用26.1 打开internet explorer26.2 ie com方法和属性26.3 页面同步26.4 枚举所有ie窗口26.5 查找ie窗口26.6 打开新浏览器26.7 获取web页面dom26.8 访问网站脚本函数26.9 使用ie获取用户键入26.10 ie弹出对话框26.10.1 禁止ie对话框26.10.2 通过注册表改变ie修改26.10.3 弹出窗口26.10.4 禁止脚本错误对话框26.10.5 安全警告-重定向弹出框26.10.6 证书安全警告26.10.7 安全连接警告26.10.8 安全提醒-安全和非安全项26.10.9 活动内容/java script显示26.10.11 文件下载信息条26.11 使用代码处理弹出对话框26.12 文件下载-安全警告弹出框26.13 检查网页中的失效图片26.14 把browser对象只是window对象使用26.15 定制browser应用程序第27章hp quality center应用27.1 quality center27.2 用qtp连接qc27.3 qc模式27.4 qc中的相对模式27.5 qcutil对象27.6 qc开放式测试模式27.7 tdconnection对象27.7.1 command and recordset对象27.7.2 attachmentfactorycollection27.7.3 从qc下载文件的简便方式27.7.4 上传附件到qc27.8 获取当前检测的位置27.9 列举testlab文件夹中所有的检测27.10 列举test lab标签页中所有的检测27.11 获取当前测试集的位置第28章qtp高级应用28.1 不同机器的检测脚本同步执行28.2 遍历所有settings变量28.3 利用脚本停止脚本并再次运行脚本28.4 运行时添加场景恢复28.5 在脚本执行完毕时执行代码28.6 使对象在网页中可见28.7 高级文本检查点28.8 利用class类扩展检测对象28.9 jscript在qtp中的应用28.9.1 传递可变数量参数给变量28.9.2 域的差别28.9.3 使用try…catch错误捕获28.9.4 jscript数组应用28.9.5 js类的应用28.10 对象类映射第29章qtp1129.1 ide增强29.1.1 注释29.1.2 增强的智能提醒功能29.1.3 run to stepwhile循环语句5.8 for循环语句5.9 break语句和continue语句5.9.1 break语句5.9.2 continue语句5.10 多重循环的嵌套5.11 程序例子习题第6章 数组6.1 一维数组6.1.1 一维数组的定义6.1.2 一维链表元素的引用6.1.3 一维字符元素的初始化6.2 二维数组6.2.1 双下标变量6.2.2 二维数组及其定义6.2.3 二维数组的初始化6.2.4 二维数组应用举例6.3 综合应用举例6.4 字符字段6.4.1 字符串和字符串结束标志6.4.2 字符字段的输入输出6.4.3 字符串函数6.4.4 二维字节变量6.4.5 字符下标应用例子习题第7章 函数7.1 函数的定义7.1.1 函数定义的格式7.1.2 形式参数和实际参数7.1.3 函数的返回值7.2 函数的通常调用7.2.1 函数读取的形式7.2.2 函数读取的方法7.2.3 主调函数跟被调函数的相对位置关系7.2.4 函数读取时值的单向传递性7.2.5 函数读取实例7.3 函数的嵌套调用7.4 函数的数组读入7.4.1 概述7.4.2 函数的数组读入应用例子7.5 数组作为方程的参数7.5.1 数组元素作为方程的形参7.5.2 数组名作为变量的参数7.5.3 多维变量作为数组的参数7.6 变量的作用域——局部变量和全局函数7.6.1 局部数组7.6.2 全局函数7.7 变量的内存类型和生存期7.7.1 变量的内存类别7.7.2 动态变量7.7.3 静态函数7.7.4 外部变量7.8 内部数组和外部变量7.8.1 内部数组7.8.2 外部变量习题第8章 编译预处理8.1 宏定义8.1.1 不带参数的宏定义8.1.2 带参数的宏定义8.2 文件包括8.3 条件编译8.3.1 条件编译语句18.3.2 条件编译语句28.3.3 条件编译语句3习题第9章 指针9.1 地址和指针的概念9.2 指针变量和地址运算符9.2.1 指针变量的定义9.2.2 指针变量的使用9.3 指针和函数9.3.1 通过指针存取函数元素9.3.2 字符串和指针9.4 指针和变量9.4.1 指针作为数组的参数9.4.2 指针作为变量的返回值9.4.3 指向数组的指针9.5 多级指针9.5.1 多级指针的概念和使用9.5.2 多级指针和多维变量9.5.3 命令行参数9.6 指针和动态传输管理9.6.1 概述9.6.2 malloc函数和free函数9.6.3 动态存储管理的应用9.7 指针和指针运算小结习题第10章 结构与联合10.1 结构体类型变量的定义和引用10.1.1 结构体类型变量的定义10.1.2 结构体类型变量的引用10.1.3 结构体类型变量的初始化10.2 结构体数组的定义和引用10.3 结构体指针的定义和引用10.3.1 指向结构体类型变量的指针的使用10.3.2 指向结构体类型数组的指针的使用10.4 链表的定义和操作10.4.1 概述10.4.2 链表的构建10.4.3 输出数组元素10.4.4 删除键值元素10.4.5 插入链表元素10.4.6 查询字段元素10.5 联合10.5.1 联合的定义10.5.2 联合成员的使用10.5.3 应用举例10.5.4 数组
复制代码 代码如下:

class Myclass
{
private:
int a,b,c;
static int Sum; //声矛数据成员
public:
Myclass(int a,int b,int c);
void GetSum();
};
int Myclass::Sum=0; //定义并朝静态数据成员
Myclass::Myclass(int a,int b,int c)
{
this->a=a;
this->b=b;
this->c=c;
Sum+=a+b+c;
}

void Myclass::GetSum()
{
cout <<"Sum=" <<Sum <<endl;
}
int main(void)
{
Myclass me(10,20,30);
me.GetSum();
system("pause");
return 0;
}
由下例可知,非静态成员变量可以任意地访问静态成员变量跟静态数据成员。
非静态成员变量Myclass(int a,int b,int c)和GetSum()都访问了静态数据成员Sum。
静态成员变量不能访问非静态成员变量跟非静态数据成员。
关于静态成员变量,可以总结为下面几点:
弛类体外的变量定义不能指定关键字static;
静态成员之间可以互相访问,包括静态成员变量访问静态数据成员和访问静态成员函数;
非静态成员变量可以任意地访问静态成员变量跟静态数据成员;
静态成员变量不能访问非静态成员变量跟非静态数据成员;
由于没有this指针的额外开销,也态成员变量与类的全局函数相比速度下会有少许的曰
但是c语言也有static关键字, 但是c语言中的static并不仅仅静态分配的含义,如果用在静态局部变量(函数外部), 则是表明这个变量是静态的, 如果用在全局数组或变量, 则是避免函数或全程变量被其它c文件中的变量访问(通过include 头文件). 为什么java里的static 会和c 语言里的有这样区分呢.中静态函数没有this指针(即在存储中静态函数和普通全局变量几乎没有什么差别),故可以匹配编译通过, 但是当句柄数组要访问私有函数呢答:静态方式可以直接借助类名调用,任何的例子也都可以调用c 类 static 函数,因此静态方式中不能用this和super关键字,不能直接访问所属类的例子函数跟案例方式(就是不带 static的成员函数跟成员成员方法),只能访问所属类的静态成员变量和成员原则
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-132687-1.html
四
好棒