c++课程感想6
2015-10-14 22:49
211 查看
static:共享即通讯
一句话概括:局部作用域,全局生存期。
为什么要设计成为这样?
可以看一下这样的一段代码:
在这里,创建了一个静态局部对象,然后构造函数在这里只是调用了一次,当再次调用时,并没有调用构造函数,这里我们可以类比静态局部变量,这个是存储在静态数据区域的,然后构造函数一旦调用,对象就在静态区了,所以下次就不需要我们再次去调用了。
还有就是一个程序
在这里,我们要考虑的是出来的结果,为什么是A而不是main,在这里,A在全局区域,那么首先在加载时便会自行调用构造函数,于是A出来了,但是我们不妨想想,在这里,直接没有经过main函数就进行调用了,所以这是个问题。一般设计者是希望在main里面执行的。
一句话概括:局部作用域,全局生存期。
为什么要设计成为这样?
可以看一下这样的一段代码:
#include <iostream.h> #include <string.h> class CSmallOne { public: CSmallOne(int sma); int a; }; CSmallOne::CSmallOne(int sma) { cout <<"Smallone constructing with a value of" << sma <<endl; } void fn(int n) { static CSmallOne sm(n); //静态局部对象在静态数据区创建(只一次) sm.a += n; cout <<"In function fn with n= " << sm.a <<endl; } //CSmallOne sm(5); void main() { fn(10); //只看见一次调用构造函数 fn(10); //值可以累加(静态局部对象的特征) }
在这里,创建了一个静态局部对象,然后构造函数在这里只是调用了一次,当再次调用时,并没有调用构造函数,这里我们可以类比静态局部变量,这个是存储在静态数据区域的,然后构造函数一旦调用,对象就在静态区了,所以下次就不需要我们再次去调用了。
还有就是一个程序
#include <iostream.h> #include "A.h" A :: A() { cout << "in A" << endl; } class A { public: A(); }; #include <iostream.h> #include "A.h" A a; void main() { cout << "in main" << endl; }
在这里,我们要考虑的是出来的结果,为什么是A而不是main,在这里,A在全局区域,那么首先在加载时便会自行调用构造函数,于是A出来了,但是我们不妨想想,在这里,直接没有经过main函数就进行调用了,所以这是个问题。一般设计者是希望在main里面执行的。
相关文章推荐
- 5位选手说两个猜测,都说对一半,预测比赛名次问题
- C++关键字的详解 ---- volatile关键字
- 项目38.1大奖赛计分(续一)
- 【C++学习】malloc函数详解
- C++中windwos数据类型和类型转换
- 剑指offer第十题【矩形覆盖】c++实现
- [C++] String to Int
- C++primer学习:文本查询程序
- C++实现分段双调排序算法
- c语言学习笔记(13)pragma详解,#和##运算符及编译指示字总结
- poco框架:日志相关知识和使用方法
- [C++] Memory Retrieval(内存检索)
- C语言中简单的for循环和浮点型变量
- 求一个字符串中最长的字符串
- More Effective C++ 条款35 让自己习惯于标准C++ 语言
- 【c语言】 小游戏——猜字游戏
- C++ 不改变链表结构 逆序打印
- C++:操作符
- [c++]使用前后缀表示常量的类型
- C++文件操作