C++ static

C++中的static好像有两个意思

第一个是定义全局变量的;
第二个好像是让类成员不实例化就能用的意思,不知道对不对谁给我再讲讲。 谢谢;
谢谢 你们

静态变量不一定是全局变量,全局变量可以用extern来声明。静态变量主要用于在函数定义或者类里定义,使所有函数或类对象都共用一份。比如
void fun()
{
static int count = 0;
count++;
cout<<count<<endl;
}
如上,每调用fun()一次,count++,如果不加static,则每次进去count都是=0,加了static只有第一次调用fun()时会初始化count,以后都不会。
类里的静态成员或函数,则可以直接通过类名调用。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-24
其实都是一个意思,就是静态变量的意思。什么叫做静态变量?静态变量就是指变量已经被编译在exe或者lib, dll文件中了,直接使用就可以了,不像其他变量,需要先声明申请内存然后再可以用,函数也是变量,这就是为什么静态变量或者静态函数可以直接使用的原因。
第2个回答  2010-07-24
第一个是对的,第二个是说类里面有成员变量是static的时候,所有对象共享该变量的值,可以用类成员访问该变量,也可以直接访问。
class A
{
public:
static int a;
};
//init
int A::a = 0;
通过对象访问
A obj;
obj.a;
通过类访问
A::a;
第3个回答  2010-07-23
补充:
1作为函数的修饰符时,只能用于当前文件中访问
2定义static的全局变量,在VC6.0中,不初始化的话,在调试窗口,无法查看;初始化了的话,就可以的
3.static修饰的静态函数,只初始化一次
第4个回答  推荐于2017-09-18
static关键字至少有下列作用:
(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(就是你第2个所说的意思。在其他模块用需要使用using namespace)
(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。本回答被提问者采纳

C++头文件中static 和 inline修饰函数或变量的区别
首先,inline修饰的函数或变量(c++17起支持变量)在全局范围内保留一份。其次,static修饰的函数或变量则在各自编译单元内保留一份。接着,static修饰的局部变量在每个编译单元内都会有多份实例,而inline函数的static变量只有一份。进一步,static inline修饰的函数或变量与单独使用static修饰的效果相同。需要...

static在C和C++中的用法总结
1、修饰函数内部的变量,即局部静态变量。这类变量的值不会因函数调用结束而丢失,当函数再次被调用时,变量保持上次调用后的值。2、修饰文件级别的变量或函数,表示这些元素仅在当前文件可见,其他文件无法访问。在C++中,static的用法得到扩展,包括:3、修饰类的数据成员,即静态成员。静态成员变量和数据...

如何理解c++中的关键字static,const,以及#define在定义
define与static、const不同,属于预处理器的宏。预处理器在编译前执行,进行字符串替换,不遵循语言语法。宏定义的内容直接插入。例如:预处理器替换后,编译器将认为你定义了一个名为fuck、类型为fuck的变量。const代表constant,意为常数或常量。用于修饰变量,表示其不可修改;用于指针,表示指针指向的对...

c++static关键字的作用
c++中static关键字的作用是隐藏,利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。C++是一种面向对象的计算机程序设计语言,由美国ATT贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现,最初它被称作“CwithClasses”(包含类的C语言)。它是一种静态数据类...

C++ 的强制转换一般在什么时候用 static
static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四个。double a = 1.999;int b = static_cast<double>(a); \/\/相当于a = b ;e:\\vs 2010 projects\\static_cast\\static_cast\\static_cast...

C++类的线程函数为什么要加static修饰
因为对于非静态成员函数而言,默认情况下,参数列表中都会有一个this指针,例如fun(自定义参数),实际上编译后就变成这样类型:fun(自定义参数,某个类 * this)。这样编译就会出错,多了一个参数,所以这个函数就不能作为线程函数了。加上static修饰之后,类的成员函数就不会加上默认this了,所以符合...

在C++ 中,关键字static有什么作用
static有三种用途:修饰全局变量时,用于限制该全局变量的使用范围。仅能在本文件内使用该变量。修饰局部变量时,用于修改该变量的存储控件类型。普通局部变量存储在栈区,当函数执行结束后,就会被清空。静态局部变量存储在静态区,当函数执行结束后,不会被清空。下次再次执行函数时,能保持上一回的值。修...

C++中static、inline、weak symbol和Unused warnning
在C++编程中,`static`、`inline`、`weak symbol` 和 `Unused warning` 是一些关键概念,理解它们的用法和行为有助于编写高效且无警告的代码。`static` 关键字在 C++ 中有多种用途,最常见的两个场景是用于单例对象和本地作用域的函数或对象。当使用 `static` 修饰函数时,它具有本地作用域特性,...

C++基础语法梳理:const,static以及 this 指针
const指针与引用 指向常量的指针和自身是常量的指针,两者都表示不可修改的对象指针。引用,指向常量的引用用于避免函数修改值,但不能有const引用,因为引用本身不是对象。static修饰 static修饰普通变量,使其存储在静态区,有初始值则用初始值初始化,否则用默认值;静态函数仅在定义文件内可用,用于防止...

static在C++中的详解
static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。static 的两大作用:一、控制存储方式:static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。1、引出原因:函数内部定义的变量,在...

相似回答