C++中有关各种变量声明和定义的问题

来源:互联网 发布:周易算法49 编辑:程序博客网 时间:2024/05/16 08:46

今天去给本科生助教,然后本科生问了我一个问题,没有回答出来,尴尬死了,回到实验室之后立马翻资料,并记录下来。

主要问题是这样的,先把代码粘贴下来。

class Test  {public:int a[3] = {1,2,3};Test();virtual ~Test();};

在类中定义一个成员数组,并给数组赋初值,第四行代码。编译报错,{语法错误,也就是类成员数组声明时不能显示初始化,然后又在构造函数中使用以下代码进行初始化还是不行,也就是声明过后就不能使用列表的形式进行初始化。

Test(){a={1,2,3};//这样肯定是错误的,因为a本身是一个常量,不能放置在等号的左边。}

综上所述,数组的初始化,要么在声明时使用列表形式进行初始化,要么只能一个一个进行初始化。但是数组作为类的成员变量,是不能在声明时进行初始化的。而数组作为全局变量和函数的局部变量时,可以在声明时使用列表形式进行初始化。如下两种形式都是正确的。

int a[3] = {3,1,2};//正确int main() {int b[4] = {3,1,4,2};//正确}
通过上述问题,顺便总结了一下C++中变量的初始化问题。

1.全局变量:声明时可以定义。
2.方法局部变量:声明时可以定义。
3.类成员变量:声明时不可以定义。但是在VS2010版本中,const static 类型的整型数据在声明时可以定义,其他类型则不可以。其他的编译器还没有测试。如果有好心人知道的话,可以写在评论中。Thank you.

原创粉丝点击