c++在类中定义一个成员数组然后通过构造函数从外界赋值为什么不行
时间: 2024-02-11 19:05:15 浏览: 23
C++中定义一个成员数组并通过构造函数从外界赋值是可以的,但是需要注意以下几点:
1. 数组的大小必须是已知的,不能使用变量来定义数组的大小。
2. 构造函数必须使用成员初始化列表来初始化数组。
下面是一个例子:
```cpp
class MyClass {
public:
MyClass(int size) : size_(size), array_{0} {
// 构造函数使用成员初始化列表初始化数组
}
private:
int size_;
int array_[10]; // 数组大小为10,不能使用变量来定义数组大小
};
```
在构造函数的成员初始化列表中,我们可以使用花括号来初始化数组,例如`array_{0}`表示将数组所有元素初始化为0。
相关问题
C++中定义一维指针数组并用循环和malloc为指针赋值
可以使用以下代码定义一维指针数组并用循环和malloc为指针赋值:
```c++
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int size = 5; // 数组大小
int **arr = (int **)malloc(size * sizeof(int *)); // 定义一维指针数组
// 为每个指针分配内存空间并赋值
for (int i = 0; i < size; i++) {
*(arr + i) = (int *)malloc(sizeof(int));
**(arr + i) = i + 1;
}
// 输出每个指针所指向的值
for (int i = 0; i < size; i++) {
cout << **(arr + i) << " ";
}
// 释放每个指针所占用的内存空间
for (int i = 0; i < size; i++) {
free(*(arr + i));
}
// 释放整个指针数组占用的内存空间
free(arr);
return 0;
}
```
输出结果为:1 2 3 4 5
C++中定义一个数组是若不赋值,数组会自动赋值为零吗
在C++中,如果定义一个数组但不初始化,数组的元素不会自动赋值为零。它们的值是未定义的,也就是说,它们可能是任何值。如果要确保数组的所有元素都被初始化为零,可以使用以下语法:
```cpp
int array[10] = {0};
```
这将初始化数组的所有元素为零。如果你只想初始化数组的一部分元素,可以使用类似以下语法:
```cpp
int array[10] = {1, 2, 3}; // 初始化前三个元素为 1, 2, 3,后七个元素为 0
```
注意,如果定义一个静态存储期的数组,则其元素默认初始化为零。例如:
```cpp
static int array[10]; // 所有元素都被初始化为零
```