类内定义静态变量与类外定义静态全局变量的区别,最好举个例子。网上有的答案不是很明白

如题所述

两点不同:语法不同、可见范围不同

语法见下面的代码

class A {
public:
    static int var_in_class;
}
int A::var_in_class = 100;

static int var_in_global;

可见范围不同说的是:

类静态变量只能通过这个类来使用,而且受到定义时的public/protected/private的影响,如果定义成public才能被非这个类的函数使用,加protected和private时与普通成员加procted和private的含义是相同的。使用时的语法:

int abc = 100 * A::var_in_class;

静态全局变量的可见范围就简单明了多了:只能在定义这个变量的文件内使用,使用的语法和全局变量没有任何区别。

追问

谢谢您的回答,类外申明的静态全局变量与全局变量的区别是能否在多个文件中可见,怎么理解 ,能否举个例子 ,谢谢

追答

“能否在多个文件中可见”这个说法就是针对我上面说的“只能在定义这个变量的文件内使用”。也就是说static定义的全局变量只能在一个文件内使用。而类静态变量跟文件没有关系,只跟限定符(public等)有关,能在多个文件内使用。你要是还不明白我再举例子。

温馨提示:答案为网友推荐,仅供参考
相似回答