2 cwh6319 cwh6319 于 2017.01.13 16:51 提问

const定义变量时可以不赋值吗?

const定义变量时可以不赋值吗?
请问const定义变量的同时可以不赋值吗?

3个回答

oyljerry
oyljerry   Ds   Rxr 2017.01.13 17:31
已采纳

非POD类型,需要初始化时赋值

POD可以这样

 struct C
{
   const int i;
   C() {}
};
a29562268
a29562268   2017.01.13 18:33

不可以不赋值,定义时就要初始化,const内存储存区与普通变量不同

chen956
chen956   2017.01.13 21:00

如果是普通const变量必须在声明就初始化。如果是非静态成员const变量必须在成员初始化列表中初始化,如果是静态成员const变量则必须在类实现的时候初始化。具体可以参考
http://blog.csdn.net/chen956/article/details/50596109

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
四句话解决const赋值问题
我以前一直没搞懂什么const这样赋值会错,那样又错,要这么这么才可以,非常乱。经过一个上午的总结,终于提炼成四句话
c语言中const 类型变量地址赋值给指针。
作者:余天升 链接:https://www.zhihu.com/question/21792567/answer/19354371 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 const在C语言中是表示道义上保证变量的值不会被修改,并不能实际阻止修改,通过指针可以修改常变量的值,但是会出现一些不可知的结果。几种情况不同,我们一个一个来看。 1、直接赋值 cons
const定义的变量,可以作为数组[ ]里面的值吗?
结论: 在c中是不可以的,在c++中可以。 证明: //const.c int main() { const int a = 100; int arr[a];//error printf("%d\n",sizeof(arr)); return 0; } /*总结: 在c中,const是指不能被改变的变量,占有存储空间,所以编译器并不知道编译时的值, 所以
ES6新特性 let、const、变量对象的解构赋值
最近在学习ES6的新特性,在看阮一峰写的ECMAScript 6 入门,目前刚开始看用自己能够理解的语言记笔记方便下次查看一 let 1、let 局部变量 不会变量提升,在运用时候要先声明在调用,var 全局变量 会产生变量提升; 2、在块级作用域中纯在let const,他所生命的变量就绑定在这个区域,未经过声明调用会报错,在语法上被称为“暂时性死区”(temporal dead zone,简
const声明和全局变量
constconst跟let一样是es6中新的声明方法,很多的特性跟let是一样的。特性1.不可变更性 声明简单的类型时,该变量无法修改,这就意味着不能声明不赋值 声明的非简单的类型的数据时,可以在不改变改数据的内存地址的情况下,修改数据 const a=1 a=2 //报错const a={b:1} a.b=2 console.log(a) a=3 // {b:2} // 报错从上面的例子可以看出
为什么对于类的const成员,只能使用初始化列表,而不能在构造函数内部进行赋值操作
结论:对于类的const成员,只能使用初始化列表,而不能在构造函数内部进行赋值操作。原因如下:1、构造函数不能被声明为const函数,因此当我们创建一个类的const对象时,直到构造函数完成初始化的过程,对象才真正取得其“常量”的属性,因此,构造函数在const对象的构造过程中可以向其写值;见C++ primer P235;2、初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋...
ECMAScript 6笔记(let,const 和 变量的解构赋值)
参考阮一峰的书籍ECMAScript 6 入门,感谢阮大神! let和const命令let命令 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。基本用法 var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };
二,ES6中新增const关键字的使用方法
之前用var声明变量,变量想怎么改就怎么改,这里const关键字也是声明变量的,不过声明的是常量,常量就是固定的一个值,不能改变, 例如:const name=“唐僧”; name="老沙"//  报错 因为它要更改常量name 只在块级作用于起作用,和let关键字一样 if(true){ const age=20; } alert(age)//报错 age在代码块外不起作用
使用extern声明外部定义的变量时不能赋值,只需声明变量
在main.cpp中定义 Flight *p2;  Flight *Head=NULL; int shouldsave=0; 在LinemanageMenu.cpp中使用,赋值会报错 extern Flight *p2; extern Flight *Head; extern int shouldsave;
结构体变量在定义时赋值
http://bbs.chinaunix.net/thread-1264281-1-1.html 在看Wireless tools这个工具的源代码时,看到iwlib.c这个文件,发现了standard_ioctl_descr这个变量,它是iw_ioctl_description定义的数组, iw_ioctl_description是这样定义的: struct iw_ioctl_des