const变量初始化问题

在C++中const变量定义时必须进行初始化,否则无法通过编译。

初始化的方式有多种,可以通过字面值对其进行初始化,也可以通过变量对其初始化,或其他方式,只要能给const变量赋初值即可(当然初值应该有其意义)。

例:

?





1

2

3

int i = -1;

const
int ic1 = -1;

const
int ic2 = i;

不合法情况:


const int ic = i;
int *const cpi = ⁣

因为const指针cpi指向的不是一个const对象。

const变量初始化问题,布布扣,bubuko.com

时间: 2024-10-14 14:10:27

const变量初始化问题的相关文章

程序猿之---C语言细节28(const变量初始化、数组大小用const变量细节、const变量与#define宏、volatile修饰)

主要内容:const变量初始化.数组大小用const变量细节.const变量与#define宏.volatile修饰 一.const变量初始化时必须赋值 二.const变量在C++中可以做数组大小元素.在C中不行,因为它是变量 三.const和#define区别:内存分配 四.volatile修饰一些变量:易被操纵系统.硬件.多线程修改的变量 #include <stdio.h> int main() { /* 测试1 */ const int b; // 不初始化会报错 // b = 2;

static, const 和 static const 变量的初始化问题

const 常量的在超出其作用域的时候会被释放,但是 static 静态变量在其作用域之外并没有释放,只是不能访问. static 修饰的是静态变量,静态函数.对于类来说,静态成员和静态函数是属于整个类的,而不是属于对象.可以通过类名来访问,但是其作用域限制于包含它的文件中. static 变量在类内部声明,但是必须在类的外部进行定义和初始化. const 常量在类内部声明,但是定义只能在构造函数的初始化列表进行. class A { public: A(int a) : constNum(a)

类内const static(static const)成员变量初始化问题

在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题. 查阅了许多资料,发现VC环境下,只允许const static成员变量在类外初始化,这个应该是编译器遗留下的bug(你也可以说是要求严格). 在其他编译器下,整型以及枚举类型的const static成员变量是允许在声明的同时进行初始的,其中整型包括int.short.long.char等,非整型是指浮点型 包括float.double等.

const map 成员变量初始化例子

Author:DriverMonkey Mail:[email protected] Phone:13410905075 QQ:196568501 #include <string.h> #include <iostream> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <map> using namespace std; class a_t

构造函数初始化列表----主要为解决const变量的赋值而生

形式为 类内定义    Student:m_name("jo"),age(10){...} 类外定义    Student::Student(string name,int age):m_name(name),m_age(age){...} 注意:1)可以同时给多个数据赋默认值,以 逗号 隔开:    2)只能使用括号进行初始值赋值: 3)最后大括号{}内可以加其他函数---即初始化列表只能用于构造函数,且必须先于构造函数执行:    4)大括号{}结尾没有标点符号 ===>为何

C++ 初始化形式、变量初始化规则、类构造函数的初始化列表

类构造函数的初始化列表,举例 一个对象的构造分两部分,首先是分配空间,然后初始化. 只要有对象生成,不管是以什么形式生成,都会调用构造函数进行初始化. 然后下面有个例子,在蓝色区域Big类的复制构造函数中,使用初始化列表进行成员的初始化(方法1)没有问题,而如果不使用初始化列表.直接在函数里用里面注释掉的代码(方法2)则会报错:Base类没有合适的构造函数. // W3-课程作业2-4.cpp : Defines the entry point for the console applicati

C/C++ const变量的修改

C语言中的const是运行时const,编译时只有定义,只用在运行时才会初始化,这也是为什么const不能用来定义数组的原因,并且const的值也是可以动态修改的. C++中的const是编译时const,故能够用来初始化数组,企图修改const的值是未定义的,如果要修改const的值只能改变const变量的声明方式为 const volatile c=10. 测试用例: const int ci=10; int *j =(int *)&ci; *j=100; printf("%d,%d

DS-5/RVDS4.0出现变量初始化错误

最近调试的时候老是出现各种错误,一般都是内存错误,我无意间发现所有的全局变量出现问题,就是声明全局变量后,赋值的初值出现错误. 初值明明是0x12345674,最后变为了0xBA141234,出现了移位现象 测试代码 //内存测试,防止出现内存异常,主要表现为全局变量初始化有问题 #define MEM_TEST 0x12345678 u32 MemTest = MEM_TEST; _init_alloc(0x56000000, 0x60000000-8); //初始化堆的范围 pJpegBuf

C++11中的变量初始化

变量初始化很简单嘛,有什么难的? 打住,不要骄傲,往下看,你会哭的. 请看下面四个问题: 1: 下面的语句有不同吗?不同在哪里? widget w;                   // a widget w();                 // b widget w{};                 // c widget w(x);                // d widget w{x};                // e widget w = x;