CPP学习笔记-4
来源:互联网 发布:人才招聘源码 码农网 编辑:程序博客网 时间:2024/05/16 02:47
static两种不同的职责,一是其持久存储的,二是访问性受到局限,一个是在哪里,另一个是谁能看到你,在C中基本是这样的。
static in C++
static 本地变量是持久存储的,但是,只有在本地域的范围内才能访问,下面只能在f()中访问static本地变量x
int f(){ static int x; x++; return x;}int main(){ cout << f() << endl; cout << f() << endl; return 0;}
静态成员变量被所有的对象实例共享
class A{ public: A(int i):i(i){ cout << "A()" << endl; } ~A(){ cout << "~A()" << endl; } static int j; private: int i;};int A::j = 0;int main(){ A a(1),b(2); cout << a.j << endl; a.j += 100; cout << b.j << endl; return 0;}
静态成员函数被所有对象共享,只可访问静态成员,否则:
[Error] invalid use of member ‘A::i’ in static member function
函数中的静态对象
函数中若有静态对象,那么它什么时候被初始化,每次调用函数的时候怎么处理?
class X{ public: X(int x, int y):x(x),y(y){ cout << "X()" << endl; } ~X(){ cout << "~X()" << endl; } void inc(){ this->x++; this->y++; } void out(){ cout << "x:" << x << endl; cout << "y:" << y << endl; } private: int x,y;};void g(){ static X x(0,0); x.inc(); x.out();}int main(){ cout << "start" << endl; g(); g(); return 0;}结果:startX()x:1y:1x:2y:2~X()
多次调用g(),只初始化一次对象,再次调用时,使用同一对象,g()第一次调用时,x初始化。
全局(global)对象
全局对象的构造函数在main函数之前被调用,当main退出或exit被调用时析构
0 0
- CPP学习笔记-4
- Effective CPP 学习笔记
- 学习cpp的笔记
- CPP学习笔记-1
- CPP学习笔记-2
- CPP学习笔记-3
- cpp学习笔记(二)
- CPP 学习笔记随笔
- cpp 学习笔记
- cpp学习笔记
- cpp学习笔记 2数据类型
- CPP Primer 学习笔记一
- cpp学习笔记(一)
- cpp学习笔记(三)
- cpp学习笔记(四)
- CPP复习笔记 4
- OpenCV3.0 Examples学习笔记(4)-demhist.cpp
- Effective CPP 学习笔记 2010/06/24
- IDEA 14 部署 tomcat
- cocos ANT配置
- 1.Socket网络编程之传递字符类型(图解与编码)
- C#第三次作业--c#读取Excel文件
- Linux 网络编程——TCP编程
- CPP学习笔记-4
- Extjs4.2密码框两次判断和日期判断
- 强类型语言和弱类型语言
- Github Gitorious
- Github上的andoird开源组件整理
- 15第九周项目二——Time类中的运算符的重载(续)
- POJ 2349 Arctic Network
- runtime运行机制
- 虚拟设备创建多分区虚拟磁盘(软盘,硬盘)