华易动力天津网站制作公司 免费咨询热线:400-0022-823 电话:022-28261501 28335110
地址:天津市河西区围堤道146号华盛广场B座22楼
点击这里给我发消息  点击这里给我发消息  点击这里给我发消息
  首页 关于我们 建网站:从这里开始 域名空间服务 案例展示 新闻中心 网站制作知识 网站设计技巧 人才招聘 联系我们  
  网站制作知识
程序制作
数据库知识
域名空间知识
SEO网站优化
天津网站制作方案 更多..
如何获得了大量的好的外链资源
常见的长尾关键词组合方法
如何利用百度平台获取流量
营销优化型网站的简介
新顶级域名的形式
网站建设分为如下八步
网站专题设计
关于门户网站设计方案
华易动力售后服务规范
服务器机房介绍
优秀客户展示(排名无先后) 更多..
环化(天津)燃气设备安装有限公司
天津市国信投资担保有限公司
天津城市职业学院
天津大学EMBA
南开大学CID
北京同仁堂天津药店有限公司
金权道(天津)餐饮管理有限公司
天津市友好合作城市企业促进会
天津天大求实电力新技术股份有限公司
天津红旗农贸投资控股有限公司
天津二人锅餐饮管理有限公司
天津市滨湖剧院
渤海产业投资基金管理有限公司
天津天富软管工业有限公司
新闻中心-行业资讯 更多..
· 企业为什么要做APP   2016-11-24
· 如何搭配网站   2016-11-16
· css表单布局的五个小技巧   2016-11-16
· 服务器维护的重点   2016-11-14
· 如何建设你想要的网站类型   2016-11-14
· 阿里设计师用这2方法提升设计创新力   2016-11-3
· 我们看过的各种设计理论法则   2016-11-3
· Windows 8设计时的安全性   2013-12-27
· 未来网站技术的发展   2013-10-12
· 企业网站建设规划   2013-7-30
全部信息 当前位置:首页网站制作知识 → 详细内容
静态成员函数:C++_静态成员
更新时间:2012/6/26 点击:1187次
静态成员包括静态数据成员和静态函数成员两部分 注意:类体中的成员的声明前加上static关键字,该成员就成为了该类的静态成员。和其他成员一样,静态成员也遵守public/protected/private访问规则。 一、静态数据成员 为什么要引入静态数据成员:主要原因是为
静态成员包括静态数据成员和静态函数成员两部分
注意:类体中的成员的声明前加上static关键字,该成员就成为了该类的静态成员。和其他成员一样,静态成员也遵守public/protected/private访问规则。
一、静态数据成员
为什么要引入静态数据成员:主要原因是为了取代全局变量。
什么时候使用静态数据成员:主要用途是定义类的各个对象公有的数据,如统计总数,平均数
语法:
定义:static + 普通数据成员定义
初始化位置:必须在类外初始化,主函数前,而不能在类中进行初始化
初始化:类型 类名::变量 = 值;------注意这时,前面不能加static
使用:
类外使用:
       访问规则:public
       使用方式:类对象名.静态数据成员名 或 类类型名::静态数据成员名
类中使用:
       访问规则:public/protected/private(可以是任意方式定义)
       使用方式:直接使用静态成员名
举例:
静态成员的定义:static int x;
静态成员初始化:int A::x=1;
性质:
1、针对类而言,只有一个静态数据存储空间 且 存储空间不由构造函数分配
2、静态数据成员在编译时创建并初始化,在所有类的任何对象被建立前就存在。
3、静态数据成员被类的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。
举例:
#include<iostream>
using namespace std;
class A
{
protected:
static int num;
public:
void show()
{
cout<<"num:"<<num<<endl;
}
};
class B:public A
{
public:
B()
{
num++;
}
void show()
{
cout<<"num:"<<num<<endl;
}
};
int A::num=0;//静态数据成员的真正定义---写成 int B::num=0; 也是可以的
void main()
{
A a;
a.show();
B b;
b.show();
B bb;
bb.show();
system("pause");
}
4、静态数据成员可以成为成员函数的确省参数,而普通数据成员则不可以
举例:
#include<iostream>
using namespace std;
class A
{
protected:
static int num;
public:
void count(int i=num)//通常确省参数给出的是数,这里可以使用静态成员
{
}
};
int A::num=0;
void main()
{
A a;
system("pause");
}
5、静态数据成员的类型可以是自己类的类型,而普通数据成员则不可以。普通数据成员的只能声明为 所属类类型的指针或引用。
举例:
class A
{
protected:
A aaa;//错误,普通数据成员不可以使用自己类作为类型名
A *b; //正确,普通成员可以使用自己类的指针
static A aa;//正确,静态成员函数可以使用自己类作为类型名
};
二、静态数据成员函数
为什么要引入静态数据成员:主要原因是为了取代全局函数,能在调用构造函数前(未初始化类之前)调用,通常CALLBACK函数中会用得到。
什么时候使用静态数据成员:为了访问全局变量或类的静态数据成员
语法:
定义:static + 普通成员函数定义
定义位置:可以在类内,也可以自类外。类外定义是不加static
使用:
类外使用:
       访问规则:public
       使用方式:类名::静态公有成员函数名(实参表);
        注意:和普通的成员变量一样,如果是私有或受保护的,不能在类外直接使用
类中使用:
       访问规则:public/protected/private(可以是任意方式定义)
       使用方式:直接使用静态成员函数
性质:
1、没有this指针
2、只属于一个类。
3、一般情况下,静态成员函数不访问非静态成员函数,如果确实需要,则需要传入参数通过对象名访问。
4、静态成员函数不可以同时声明为virtual、const、volatile函数。
举例:
class A
{
virtual static void a();//错误
static void b() const;//错误
static void c() volatile;//错误
};
举例:
#include<iostream>
using namespace std;
class A
{
private:
int i;
static int j;
public:
A(int i=1)
{
this->i=i;
}
static void show();
 
  公司总机:022-28261501 28335110
客户服务邮箱:service@nfree.cn,手机直线:15822335163
CopyRight 2006~2024 All Rights Reserved 天津市华易动力信息科技有限公司
地址:天津市河西区围堤道146号华盛广场B座22楼 邮编:300202

津公网安备 12010302001042号


在线QQ(售前咨询)
点击这里给我发消息  点击这里给我发消息  点击这里给我发消息