有关常量定义及初始化,下列语句中错误的是( A )。 A const int a; B const int a=10; C const int *point=0; D const int *point=new int(10);
时间: 2024-03-14 08:49:50 浏览: 22
正确的是 B、C 和 D,错误的是 A。因为 A 中定义了一个常量 `a`,但是没有对其进行初始化,所以是错误的。
对于 B,定义并初始化了一个常量 `a`,其值为 `10`。对于 C 和 D,都定义并初始化了一个指向常量的指针,其中 C 中指针指向空地址,D 中指针指向了一个动态分配的存储空间,并将其中的值初始化为 `10`。
因此,答案是 A。
相关问题
const定义常量必须立即初始化
是的,使用 `const` 关键字定义常量时,必须在定义时进行初始化。否则编译器会报错。
这是因为 `const` 定义的常量在编译时就会被确定,编译器需要知道常量的值才能为程序分配内存空间。如果定义时没有进行初始化,编译器无法确定常量的值,也就无法为它分配内存空间。
例如,下面的代码定义了一个整型常量 `MAX_NUM`,它的值为 `100`:
```cpp
const int MAX_NUM = 100;
```
如果我们省略了初始化语句,编译器就会报错:
```cpp
const int MAX_NUM; // 错误:常量定义时未进行初始化
```
因此,在使用 `const` 定义常量时,一定要确保在定义时进行初始化。如果需要在运行时确定常量的值,可以考虑使用 `constexpr` 关键字定义常量。
为什么在类中不能constInt = constInt + 5
在类中不能将一个成员变量的值与其自身相加的主要原因是成员变量的初始化发生在构造函数之前。在类中声明的成员变量在对象构造时会被初始化,而在初始化过程中,该成员变量的初始值还未确定。因此,如果将成员变量的初始值与自身相加,就会导致无法确定初始值的循环依赖。
另外,constInt = constInt + 5 这种语句也不符合const成员变量的定义。const成员变量在声明时需要被初始化,并且一旦初始化后就不能再被修改。因此,constInt = constInt + 5 这样的语句试图修改一个已经被声明为常量的值,是不被允许的。
如果你想在类中实现这样的功能,你可以使用非const成员变量,并在构造函数中进行初始化和计算。或者你可以使用一个普通的成员函数来实现这个功能,而不是在类定义中直接进行赋值操作。