因为类中写静态成员而得到的一点感悟

来源:互联网 发布:淘宝衣服评价语 编辑:程序博客网 时间: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机换屏幕失灵怎么办 手机图标有重影怎么办 苹果屏幕太灵敏怎么办 5s触摸不灵敏怎么办 导航触屏失灵怎么办 汽车导航触摸屏失灵怎么办 爱丽舍导航仪触屏失灵怎么办 手机要开机很久怎么办 小米手机屏失灵怎么办 5s手机屏幕松动怎么办 手机按钮不灵了怎么办 手机触摸屏不灵了怎么办 mac触摸板失灵怎么办 苹果屏幕触摸失灵怎么办 三星手机屏幕没反应怎么办 手机开机定屏怎么办 手机触摸局部失灵怎么办 苹果手机屏幕按键失灵怎么办 5s锁屏键坏了怎么办 平板版本太低怎么办 手机屏局部失灵怎么办 iphone8触屏不灵敏怎么办 苹果机8屏幕失灵怎么办 车钥匙丢车上怎么办 指纹锁华盖坏了怎么办 非法入了户口怎么办 司考成绩单丢了怎么办 小饭桌转让手续怎么办 两个领导不和你怎么办 两个领导意见不一致怎么办 两个领导对立我怎么办 投诉申通没用怎么办 领导作风有问题怎么办 做完火疗受风了难受怎么办 鼻子做的不好看怎么办 埋线双眼皮出血怎么办 割完双眼皮出血怎么办 全切双眼皮出血怎么办 割双眼皮出血了怎么办 割双眼皮后出血怎么办 双眼皮手术后出血怎么办