为什么要定义静态方法
人气:190 ℃ 时间:2020-09-29 05:21:50
解答
楼上说是为了访问静态成员变量,但是类的非静态方法也是可以访问静态成员变量的,楼上恐怕是跟另外一条规则搞混了:“静态方法不能访问非静态方法和非静态变量“,这是由于静态方法中的不包含隐含的this指针,从而找不到非静态的成员造成的,但是C++并没有规定非静态方法不能访问静态成员,实际上非静态方法可以访问类的所有成员变量(包括静态成员变量和非静态成员变量).
至于为什么类会定义静态成员,本质上是由于有时候有些成员(包括成员变量和方法)从逻辑上说就应该是属于类的,类的实例是不应该有这样的成员的.当然,C++容许类的实例调用这些静态成员.而通过引入静态成员造成的结果就是可以让类的各个实例共享这个静态成员.
推荐
- 定义在类外的静态方法有什么意义
- 1.有一只玻璃瓶,它的质量为0.1kg,当瓶内装满水时,瓶和水的总质量为0.4kg,用此瓶装金属颗粒若干,瓶和金属颗粒的总质量为0.8kg,若在装金属颗粒的瓶中再装满水时,瓶.金属颗粒和水的总质量为0.9kg,求金属颗粒的质量和密度.
- 一道深刻而困难的应用题
- 意思是什么也没想 什么也没考虑的成语
- 我经常弹钢琴,有是我去爬山翻译英语
- 旦辞爷娘去,暮宿黄河边,不闻爷娘唤女声,但闻黄河流水鸣渐渐.旦辞黄河边,暮至黑山头,不闻爷娘唤女声,但闻
- 边长为4的正方形ABCD沿BD折成60度的二面角,求BD中点与A的距离.
- {(10+52.8)*5-3.9343}/0.5-100
猜你喜欢
- 已知关于x的方程(x-m)/2=x+m/3与(2x+1)/3=3x-2的解互为倒数,求m的值
- 太阳为什么可以发出强烈的光
- make sure of sth.怎么翻译
- “有什么作用”和写作方法有什么区别
- 如果a大于0,b小于0,那么ab( )0 b分之a( )0 若a小于0,b小于0,则ab( )0?b分之a( )0
- 效应T细胞分泌的抗体是怎样进入发炎部位的
- 已知△ADE∽△DEF,诺△ABC的三边长分别为5cm,6cm,7cm,而△DEF中的一边长为4cm,你能求出△DEF的另外两边的
- 订书机是不省力也不费力的杠杆吗