1.静态成员

(1)由keywordstatic修饰

静态变量定义语句在编译阶段就运行,运行过程中不再运行。

(2)分类:静态数据成员、静态成员函数。

(3)静态成员时类的全部对象共享的成员,而不是某一个对象的成员。

2.静态成员的使用

(1)在定义说明前加上statickeyword。比如:

static int x;

(2)静态数据成员必须进行初始化,而且初始化必须在类外完毕。

(3)静态数据成员的初始化

数据类型 类名::静态数据成员名 = 值。//注意这里没有static出现

(4)绝对不能使用对象名来使用静态数据成员,再次强调静态数据成员是属于整个类公有,而非某一个对象。

对象名.静态成员名  //错误

(5)正确的使用方式

类名::静态数据成员

(6)假设静态数据成员的訪问权限同意,才干够在类外訪问。

3.静态数据成员举例

#include <iostream.h>



class Tc

{

  int i;

  static int k;

public:

  Tc()

  {

    i = 0;

    i ++;

    k ++;

  }

  void display()

  {

    cout<<"i = "<<i<<", k = "<<k<<endl;

  }

};

int Tc::k = 0;

int main()

{

  Tc A, B;

  A.display();

  B.display();

}

输出结果:

i = 1, k = 2

i = 1, k = 2



若改为:

Tc::Tc()

{

  i = 0;

  i ++;

  Tc::k++;//这个地方的Tc::能够省略

}

4.类的静态成员函数

(1)类的静态成员函数属于类而不是属于对象。

(2)类的静态成员函数视线中不可直接使用非静态成员,可是能够直接使用静态成员。

(3)若在静态成员函数中引用非静态成员,必须加对象名(静态成员函数接收參数然后通过參数来调用)。

5.补充

Test t1(t2); //调用拷贝构造函数

Test t1(5);  //调用构造函数

6.找出下面代码片段中的错误并分析原因。

class myclass

{

public:

    static void fun();

private:

    static int global;

};

void myclass::fun()

{

    global = 100;

}

分析:错误出在将类的静态成员放在函数中初始化,正确的初始化方法是放在类外且在函数外完毕。

class myclass

{

public:

    static void fun(myclass my);

private:

    int global;

};

void myclass::fun()

{

    cout<<global;

}

分析:错误出在两个地方,第一个地方,函数的定义和使用上出现了參数上的不一致;第二个地方类的静态成员函数能够引用静态数据成员,但对于非静态数据成员的引用必须通过对象来完毕。

补充:

(1)全局变量中不出现static修饰,static要么出如今类内要么出如今函数内。

(2)引用对象时。类的对象必须先完毕初始化。

最新文章

  1. jQuery网页版五子棋小游戏源码下载
  2. aps.net cored 新概念
  3. django静态文件配置
  4. 用GUI完成了斗地主发牌
  5. 程序流程的控制之条件分支(Delphi)
  6. java的InputStream和OutputStream的理解【转】
  7. linux命令合集
  8. centos 6.5 安装 buildbot-slave 0.8.9
  9. Jmeter 快速入门教程(三-2) -- 设置集结点
  10. 【转】eclipse中egit插件使用
  11. Activity Launch Mode
  12. lucene评分推导公式
  13. 深入理解JAVA序列化
  14. 起名字好难啊!(初识Django)
  15. Python爬虫入门教程 21-100 网易云课堂课程数据抓取
  16. 无锁编程 - Double-checked Locking
  17. C++ STL堆操作
  18. Odoo 8 Graph 视图 之 雷达图 (Radar\Spider)
  19. @RequestMapping 和 @GetMapping @PostMapping 区别
  20. MySQL open_files_limit相关设置

热门文章

  1. KOA 框架
  2. Linux学习02--Linux一切皆文件
  3. vue-lazyload插件
  4. Edward Frenkel关于几何化朗兰兹纲领的采访
  5. CentOS上手动配置nginx.services
  6. Linux的硬链接、软连接与拷贝
  7. Java多线程-基础知识
  8. CodeForces 445E DZY Loves Colors
  9. OpenJudge 1031 Lausanne Capitale Olympique
  10. How to customize Skin Gallery - Remove / rename skins and groups