static和const的区别和用处

如题所述

const总结
1.常对象:const 类名 对象名[()]
例如const Cdate d1(2008,8,8)
d1就是常对象,对象d1中的所有成员的值都不能被修改,定义常对象必须要有初值,不能做左值,如果定义了常对象,则不能调用该对象的非const成员函数,只能访问const成员函数,如果希望成员函数访问常对象,只需要将该成员函数声明为const即可,
比如:
[cpp] view plain copy
void print() const,//如果没有const则会错误
d1.print()
2.指针常量:constant pointers//指针本身是个常量(指针常量)
int *const p=&a;//指针p的值是不可以修改的
所以指针常量必须在声明时初始化,指定一个地址的值,即必须指向一个变量,指针常量的值不能修改,就是说不能更换成一个新的地址,不能指向别的常量,但是可以通过指针常量修改它所指向的变量的值
3.常量指针:pointer to constants//一个指针指向一个常量 或者指向一个普通变量是一个常量
const int *p //指针p的值可以修改,就是说可以指向另外的常量
常量指针不能通过指针修改所指向的常量,但是指针可以指向别的常量,因为指针p本身是变量,但它所指向的是常量
4.函数参数为const:
int func(const int &)
函数体内不能修改参数的值
5.函数返回值为const引用:
const int &func(int)
函数返回值为const引用,即函数值不能被修改,将const赋给另一个const引用才有意义
6.常数据成员变量:
const int age; //age是一个成员变量
常数据成员的值不能改变,只能通过构造函数的初始化列表对常数据成员变量进行初始化,而不能采用一般的在构造函数中赋值的方法实现
比如:CStudent::CStudent(int a):age(a){}
CStudent::CStudent(int a)
{ age=a }//这种是错误的
7.常成员函数:
void print() const; //print()是一个成员函数
常成员函数只能访问本类的数据成员(包括const和非const数据成员),但是不能修改他们的值,只有常成员函数才可以操作常量或者常对象
在实现时加上const关键字,在调用时不必加const
STATIC总结
1.静态局部变量:静态局部变量始终存在,生存期为整个源程序,作用域和局部变量是一样的,静态局部变量会被自动的初始化为0.
2.静态全局变量:静态全局变量只能在一个文件中使用
3.静态数据成员变量:描述整个类的特征,是整个类的成员,而不是一个对象的成员
static int i;
初始化静态数据成员在类体外进行,而且前面不加static,以免和一般静态变量混淆
一般在cpp里面初始化,格式
int CStudent::num = 0;
4.静态成员函数:属于整个类的成员函数,是整个类的成员,而不是一个对象的成员,它的调用形式可以用对象来调用它,也可以用类的名字来调用它,静态成员函数可以有类名通过::直接调用,但是非静态成员函数只能通过对象名来调用。
静态成员函数没有this指针,可以直接访问该类的静态成员和静态成员函数,而不能直接操作非静态的成员变量和非静态成员函数,如果静态成员函数中要引用非静态成员,则可以通过对象来引用
温馨提示:内容为网友见解,仅供参考
无其他回答

static和const的区别和用处
const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const...

static和const的区别和用处
static 全局唯一,在代码块范围内访问,在进程结束前内存不会释放。const 属于局部变量,代码块跳出时内存释放;直接访问会使编译器报错。

static和const的区别和用处
static:共享数据 const:编译时赋值

static 与const 有什么区别?
static是静态存储,指明变量不消失,可以修改。const是不能修改变量。

static和const的区别
作用不同、生命周期不同。1、static表示一个变量为全类共有,或者一个函数只在当前文件可用。const表示一个常量在定义时就初始化,之后不能被修改。2、static表示一个变量的生命周期是整个程序的运行期间。const的生命周期是它被声明开始,直到程序结束。

c语言中const、static关键字的用法?
const是指常数,这种数存放在rom中,也就是硬盘里,只有使用的时候才读取到内存。static类型的是局部静态数据,首先他肯定是局部变量,但是他的生存期是全局的。const数不能被修改,也不能是局部变量。static一般用于局部变量,但是他可以被修改,并且退出引用他的函数体后变量依旧存在,直到下一次引用时...

const与static有什么区别
static 的两大作用:一、控制存储方式:static被引入以告知编译器,将变量存储在程式的静态存储区而非栈上空间。1、引出原因:函数内部定义的变量,在程式执行到他的定义处时,编译器为他在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数...

const与static有什么区别
如果把const放在变量类型名前,说明这个变量的值是保持不变的,该变量必须在定义时初始化,初始化后对它进行的任何赋值都是非法的。static 是静态变量

一文带你了解static 和const
本文将深入解析C++中的两个关键修饰符:static和const,帮助理解它们的作用和用法。静态修饰符(static)静态修饰符的主要作用是控制变量的存储方式和可见性。它指示编译器将变量存储在静态存储区,而非栈空间。这解决了函数内局部变量值持久的问题,同时保持了其作用范围不变。对于类的静态成员,它们提供了...

const和static const的区别
至于类的处理,C++中并没有静态类的直接概念,通常类不会被static修饰。C#中则有静态类,它与普通类的用法截然不同,提供了特定的类级别特性。总结来说,const和static const在C\/C++中的区别主要在于变量的可读性、存储持久性、作用域和类的修饰用法。理解这些差异有助于编写更有效、易于维护的代码。

相似回答