今天写代码碰到了这类问题,简单总结一下。
对于全局变量,只能初始化,不能赋值。
如下面
int a;
a=0;
会报错,原因是对全局变量a进行赋值操作。
int a=0;
int b=a;
第一句对全局变量a初始化,正确
第二句对全局变量b赋值,报错
除此之外,还有一种更隐性的错误,一定要注意
struct student
{
string name;
}A;
student B = A;
注意,这里不会报错,但是即使你已经通过函数等方式为A赋值了(比如叫小王),B里还是什么都没有,名字是空的!!!也就是说,这种写法是有很大风险的,往往会导致程序出现很隐性的错误,建议不要这样写。懂原理的小伙伴可以讲一下。
补充:简单的数据类型可以直接初始化,复杂的(如自定义的struct, class等,或是数组 、容器等)可以在函数外定义,在函数内赋值。