int a = 0; int a(0); int a = {0}; int a{0};c++变量初始化的区别
时间: 2023-06-01 19:04:48 浏览: 53
这是一个技术问题,可以回答。
int a = 0; 和 int a(0); 和 int a = {0}; 和 int a{0}; 都是对 int 类型变量 a 进行初始化的方法,它们的效果是一样的。但是在 C++11 标准之前,只有 int a = 0; 和 int a(0); 是合法的写法,C++11 引入了初值列(initializer list)的概念,使得 int a = {0}; 和 int a{0}; 也成为了合法的写法。
相关问题
int a[10]={};算正确初始化吗
是的,int a[10]={};是正确的数组初始化方式。这种方式会将数组a的所有元素都设置为0,可以保证数组a的初值都是0。这种方式在C++11标准中被称为“值初始化”,它可以用来初始化各种类型的变量,包括基本数据类型、结构体、类等等。在这种方式下,如果没有指定初始值,则会将变量初始化为0(对于指针类型则会初始化为nullptr)。因此,您可以放心地使用int a[10]={};来初始化一个数组,并且可以保证所有元素都是0。
error: ISO C++ forbids in-class initialization of non-const static member ‘A::a’ static int a = 0;
这个错误是因为你在类内部对非常量的静态成员变量进行了初始化,而这种方式只适用于整型常量和枚举常量。如果你想对非常量的静态成员变量进行初始化,可以在类外部进行初始化,例如:
```
class A {
public:
static int a;
};
int A::a = 0; // 在类外部进行初始化
int main() {
// 使用 A::a
return 0;
}
```
在类外部进行初始化可以避免在类的多个实例中重复定义静态成员变量。