因为类中写静态成员而得到的一点感悟
来源:互联网 发布:淘宝衣服评价语 编辑:程序博客网 时间:2024/04/30 08:24
在考试中,由于经常看到一个静态变量定义在一个函数中,然后多次调用这个函数通过考察多次调用的时候这个变量的值来考察静态变量,这样的考察方式先入为主的奠定了自己对于静态变量的印象。(实际上这仅仅是静态变量中比较特殊的一类,我们称为局部静态变量)而且自己有的时候有一个不好的习惯就是将类写在main函数中。然后自己在写一个类的时候就出现了报错现象。代码如下:
#include<iostream>using namespace std;int main(){ //将类定义在了main函数之中,这样真的对吗 struct a{ static int num; }; int a::num=0;//首先,类中非只读的静态对象只能在类外进行初始化(或者说定义,因为静态对象不是属于某一个单独的对象的,因此不能写在构造函数中,因而放在类外进行初始化),而且前面不能加static(这一条是规定) a a1; cout<<a1.num<<endl; return 0;}
我们先来说明一下在main函数中写类的坏处。首先最明显的一点就是函数不能嵌套定义,那么如果我们要在类外定义类中的成员函数的时候就是不合法的,当然我们可以在类中声明函数的时候将函数写出来,但是在多数情况下我们经常是仅仅在类中进行声明,而不进行定义的。
所以,尽量不要将类定义在main函数中。
我们继续回到类中的静态成员中,对于类中的静态数据成员,C++primer有一句话,类中的静态数据成员定义在任何函数之外,注意是类中的数据成员而不是类中的成员函数,对于类中的成员函数而言,既可以定义在类外,但是定义在类外的时候是不能加static关键字的,这是规定。
再看上面的代码,我们规定类中的静态数据成员是作用域全局的,因此是必须在全局进行初始化的,而我们不可能仅仅将成员变量丢到全局,而在函数中定义整个类的,所以对于含有静态数据成员的类而言,是没有任何选择,必须定义在全局的。
0 0
- 因为类中写静态成员而得到的一点感悟
- 由一个园友因为上传漏洞导致网站被攻破而得到的教训
- wpf 关于类的静态成员的一点想法
- 关于类成员函数中静态变量的一点提示
- 项目记录-因为类增加了一个成员变量而导致的access violation
- 一点小小的感悟~~
- SNS的一点感悟
- 现代社会的一点感悟
- 而立之年的一点感悟
- 最近的一点感悟
- qobject_cast 的一点感悟
- istream_iterator的一点感悟
- 生活的一点感悟
- 裸辞后的一点感悟
- 武媚娘的一点感悟
- 职业生涯的一点感悟
- 近期的一点感悟
- 编程的一点感悟
- Retrofit 接口Demo说明
- iOS】利用PureLayout实现:比例自动布局(AutoLayout)
- C#中使用split分割字符串的几种方法小结
- bzoj2809: [Apio2012]dispatching
- java字符串对象的存储机制
- 因为类中写静态成员而得到的一点感悟
- C++中对路径字符串解析的两个重要函数
- C++第四次上机实验-项目2
- 电子老鼠闯迷宫
- java检测乱码原编码
- java 面向对象基础 UML图 构造方法 对象 参数传值 关联关系 依赖关系
- getopt的用法与optarg
- Linux的网卡由eth0变成了eth1,如何修复
- Bestcoder Pro.ID 2002 计算球体积