问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

const和static const的区别

发布网友 发布时间:2022-04-25 03:29

我来回答

5个回答

热心网友 时间:2023-10-23 09:44

const和static const的区别:

一、全局的区别

const规定变量在全局中是只读的变量,并且它的值无法被修改。

static const规定变量在当前的模块中是只读的变量,无法再全局中被其他模块读取。

二、文件的区别

const定义的指针,不赋初值编译时不报错,在初始化时应说明指针的指向。

static const不能在定义对象时对变量初始化,就是不能用构造函数来初始化。

三、函数的区别

const只能通过构造函数初始化列表进行,并且必须有构造函数。

static const是静态的,属于类的静态成员函数。

四、类的区别

const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同,所以不能在类声明中初始化const数据成员。

static const初始化在类体外进行,初始化时不加该成员的访问权限控制符private,public等,并且初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

热心网友 时间:2023-10-23 09:45

对于C/C++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

热心网友 时间:2023-10-23 09:45

const 是常量, 也就是只读的, 是一个"右值"
比如
const int iRet = 2 ;
iRet = 3 ; // 这句是错的, const类型只能在初始化的时候赋值, 之后不能改变
static称为静态变量, static有两种, 一种是在类的成员变量中, 一种是局部变量或全局变量.
在类中的, 用代码解释
class exp {
static int i1 ;
int i2 ;
} ;
int main() {
exp e1 ;
exp e2 ;
e1.i1 = 5 ;
e1.i2 = 10 ;
e2.i1 = 15 ;
e2.i2 = 20 ;
cout << e1.i1 << endl ; //这是输出的会是15
cout << e1.i2 << endl ; // 这里输出是10
return 0 ;
}
类中的static变量的意思是, 在这个类的所有实例中的值都是一样的, 它与const不同, const 只是只读, 在其他方面与不带const的变量没什么区别
还有一种是const全局变量或局部变量, 这两种是相同的, 局部变量的作用域会和全局变量相同
上代码:
static int i1 ;
int add(int a, int b) {
static int c = a + b ;
return c ;
}
void main() {
add(5, 8);
int result = c ; //这里 result会是13 无论static变量 是全局的还是局部的, 作用域都和全局变量相同
cout<<result<<endl;
}

还有几点static的特点,(适用于static全局变量或局部变量)
1.static变量在全局数据区分配内存, 也就是 在生成的可执行文件中占一定空间, 这点与全局变量相同
2.static变量只在它所在的源文件中可用. 如果一个项目有很多 .c或者.cpp文件, static变量可以出现在每一个文件中, 而他们却是不同的, static可以解决许多文件中变量 名字相同的问题.

热心网友 时间:2023-10-23 09:46

static为静态修饰符,可以放在对象前面(函数也是一种对象)如:
class Example{
public static void show(){
Console.WriteLine("这是一个静态方法");
}
}
可直接Example.show();去调用这个方法而不用实例化
当然也可以定义静态的属性:
public static string str="hello";
但如果这样Example.str="helloworld";就出现问题了
也就是客户端可以在任何地方去改变str的值。这样的话极容易产生错误,因为str的值是依靠Example类的,随时可以改变。比如再声明一个类:
Class Class1
{
Example.str="helloworld";
public void show()
{
Console.WriteLine(Example.str);//此时Example.str会输出helloworld
}
}
class Example{
public static string str="hello";
}
}
要防止str值发生改变,就需要用到const修饰符
public const string str="hello";//str被称为常量
这是如果再对Example.str赋值,则编译器将产生错误
用常量来保存公共数据是最为合适的。

热心网友 时间:2023-10-23 09:46

const和static const的区别: 多了一个static
static作用:1*范围(函数,变量只能在本文件中使用)
2设定变量存储区域(静态存储区域)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
健康码没有变红,但时间显示阳变红了 贵州健康码登录不了怎么办 北京有哪些好吃的西餐厅推荐? 什么是 辰、戌、丑、未?它们代表了什么意思? 《辰戌丑未四墓库》详解 干货:"辰戌丑未"四墓库用法详解 吃四环素有哪些副作用 吃了四环素片对身体有害吗 盐酸四环素片的不良反应有哪些呢? 服用四环素的副作用 我这是蓝宝石HD6750 RS 128 512m是正品吗?为什么这么差,性能和我以前那个GF210差不多 静态类的特点 蓝宝石显卡HD5830 1G 白金版 显卡分辨率问题 const与static的区别 请问蓝宝石hd7770白金版1g显卡的长度? 看好了一款机箱,显卡限长21mm.查这个显卡的长度就 蓝宝石hd6870极限版与普通HD5870能交火吗? 蓝宝石的4890毒药现在入手还有意义吗?这款显卡和6870毒药相比哪个更好?请各路高手指教! 目前速度快稳定性好的CPU是什么?推荐一下,搭配什么主板好? 最近玩使命7,想把显卡换了(给出报价),不知道换什么样的,下面是我的电脑配置, 现在的独立显卡.最大的有多少内存? 牛皮癣能吃海鲜喝啤酒吗? 蓝宝石HD5770和HD6770哪一个比较好一点? 王者荣耀8月8日更新内容集合_8月8日更新哪些内容 蓝宝石HD5570白金版怎么样? 我的配置I7+蓝宝石HD5970玩地铁2033能开全效吗? 王者荣耀现在有多少英雄,多少皮肤了? 地铁2033为什么配置那么高?画面没觉出多好啊 梦境修炼猴子皮肤是什么? 蓝宝hd5670 1g gddr5至尊版 属于中端还是高端? 求资料!! 孩子上幼儿园,能学到些什么呢? static 定义的函数,怎么使用 提问!有关蓝宝石HD5430 金刚石线切割机的工作原理 小孩子上幼儿园能跨区吗? 金刚石线在线切割运丝桶上为啥断线打卷 static 关键字的作用 合成金刚石用线切割好切么? 小孩5岁上幼儿园可以吗 11. Static变量是什么含义 金刚石切割片的工具分类 java中静态变量和静态方法分别有什么特点? 不到三周岁可以上幼儿园吗 孩子最小多大可以上幼儿园 金刚石可以做切割工具吗? 一岁半宝宝能上幼儿园吗 金刚石为什么不能切割金属 小朋友2岁半可以上幼儿园吗 用于切割瓷砖、大理石的金刚石锯片是否可以切割金属? 孩子4岁上幼儿园可以直接上中班吗