美文网首页
白话C++ 类的静态成员变量(方法)

白话C++ 类的静态成员变量(方法)

作者: 田陌允 | 来源:发表于2021-10-21 16:50 被阅读0次

今天遇到关于类的静态成员变量相关的BUG,复习一下这方面的知识,稍微记录下:

在 C++ 中
static 关键字最基本的用法是:

1、被 static 修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要 new 出一个类来
2、被 static 修饰的方法属于类方法(即函数),可以通过类名.方法名直接引用,而不需要 new 出一个类来
被 static 修饰的变量、被 static 修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。

在 C++ 中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。

静态成员的定义或声明要加个关键词 static。静态成员可以通过双冒号来使用即 <类名>::<静态成员名>。
类似 ConfigApp::appName 这样使用。

在类的静态成员函数中使用类的非静态成员。

#include <stdio.h>  
class Point  
{  
public:   
    void init()  
    {    
    }  
    static void output()  
    {  
        printf("%d\n", m_x);  
    }  
private:  
    int m_x; 
    // static int m_x = 111; //编译通过
};  
void main()  
{  
    Point pt;  
    pt.output();  
}

因为静态成员函数output()在类实例化对象之前就已经分配空间了,而类的非静态成员m_x必须在类实例化对象后才有内存空间,所以这个调用就出错了,就好比没有声明一个变量却提前使用它一样。
// static int m_x = 111; //编译通过
这样修改就将m_x也放在类实例化时一起分配空间了,输出111;

相关文章

  • C++中的成员变量和成员函数

    C++中的类有两个成分: (1)成员变量 成员变量按照作用域分为静态成员变量和非静态成员变量,C++中成员变量的默...

  • 白话C++ 类的静态成员变量(方法)

    今天遇到关于类的静态成员变量相关的BUG,复习一下这方面的知识,稍微记录下: 在 C++ 中static 关键字最...

  • C++中的静态成员

    静态成员变量 在C++中可以定义静态成员变量静态成员变量属于整个类所有静态成员变量的生命期不依赖于任何对象可以通过...

  • java中Static修饰符静态方法为什么不能调用非静态方法或变

    结论:静态方法只能调用静态方法(或者变量),非静态方法可以调用静态方法(或者变量)原因:类的静态成员(变量或方法)...

  • java static 关键字的理解

    1.类的加载顺序:父类的静态变量--》父类的静态方法--》子类的静态变量--》子类的静态方法---》父类的成员变量...

  • Java内存图以及堆、栈、常量区、静态区、方法区的区别

    如果是一个类里面的静态成员变量和静态成员方法,它是存储在方法区的,静态成员变量是在方法区的静态域里面,而静态成员方...

  • [初学C++]静态成员

    静态成员变量和成员函数 在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所...

  • static关键字

    在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用...

  • Java学习 Day9

    1.static(静态):修饰成员变量,成员方法,静态块。 静态变量和静态方法的调用:类名和对象名调用。调用语法:...

  • 7、静态方法

    我们知道一个类中有成员变量和静态变量,那既然有成员的方法,应该也有静态的方法。 同样的成员方法有重载方法,那么静态...

网友评论

      本文标题:白话C++ 类的静态成员变量(方法)

      本文链接:https://www.haomeiwen.com/subject/qnnfaltx.html