首页 > 试题广场 >

c++中下列哪个叙述是正确的?

[单选题]
c++中下列哪个叙述是正确的?
  • 成员变量的名字不可以和局部变量的名字相同。
  • 方法的参数的名字可以和方法中声明的局部变量的名字相同。
  • 成员变量没有默认值。
  • 局部变量没有默认值。(静态局部变量除外)
A、成员变量的名字不可以和局部变量的名字相同,错误。
        反例有两个,一个是成员变量可以使用this指针来标识,所以即便变量名相同编译器也不会认不出来,二是处于循环和分支语句内的局部变量,比如for(int i =0;;);中的i就不会和处于这句代码前后出现的成员变量i冲突。
B、方法的参数的名字可以和方法中声明的局部变量的名字相同,正确。
        原因同上,处于循环和分支语句内的局部变量可以和参数名相同,总结就是作用域不一样就可以有同样的命名,甚至你可以这样
        void f(int x){    { int x =0;}     }同样不会报变量重定义。
C、成员变量没有默认值,错误。
        反例有两个,一是数组变量,数组在作为栈对象的成员变量时默认元素都为0,二是枚举类型默认值为从0到n。
D、局部变量没有默认值,错误。
        反例有两个,一是函数中的静态局部变量默认为0,二是枚举类型默认值为从0到n。
编辑于 2021-10-30 12:49:13 回复(6)
D:函数体里的静态局部变量默认值为0
发表于 2020-08-31 22:03:37 回复(1)
C和D答案,如果该对象在堆区空间,默认值为0,如果对象在栈区空间,则没有默认值。
发表于 2020-12-23 21:07:53 回复(0)
成员变量是指结构体、枚举、联合体内变量。方法其实是类中的成员函数。至于B项经测试,编译错误。欢迎共同讨论。
发表于 2021-08-03 10:08:54 回复(0)
B说的是方法的形参和方法中的局部变量,这个可以一样吗?
觉得应该选B呢
发表于 2021-03-19 11:14:43 回复(0)
方法的参数不就是形参吗 跟局部变量相同?逗我
发表于 2021-01-13 08:48:20 回复(1)
名字可以相同,成员变量用this访问
发表于 2020-09-10 21:55:49 回复(0)
d哪错了
发表于 2020-07-18 17:23:00 回复(2)
B   形参若和局部变量相同,可以使用this指针 void f(int x){   int x =this->x;}    在不同的作用域变量名可以相同
发表于 2023-11-07 21:35:57 回复(0)
void func1(int a)
{
    int a = 456; //会报错,重定义
    for (int i = 0; i < 45; i++)
    {
        int a = 45;这个不会报错
    }
}
发表于 2021-11-20 23:41:04 回复(0)
A : 各自的作用域不同,可以同名
B: 编译会出现重定义
C:变量时可以初始化
发表于 2022-10-16 19:02:58 回复(0)
为什么选 D?
发表于 2024-04-11 21:20:59 回复(0)
定义在函数体内部的内置类型变量将不被初始化。
发表于 2023-06-10 20:33:35 回复(0)
正确答案是B吧?,其余的三个选项都是错误的。。


我选的B错了,答案显示D,,,

发表于 2022-08-16 15:48:05 回复(0)
局部变量没有默认值,是一个随机数。静态局部变量除外
发表于 2022-06-17 08:25:53 回复(0)
发表于 2022-02-05 18:02:29 回复(0)