gpt4 book ai didi

c++ - 对象内的数组

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:56 24 4
gpt4 key购买 nike

可以创建这样的数组 - 如果 size 在 arr 之前定义。

const int size = 5;
int arr[size];

但这是不可能的,当 size 和 arr 在对象或结构中时:

struct A{
A(int s) : size(s)
{}
const int size;
int arr[size]
};

A(5);

为什么会这样?这似乎有点不合逻辑,因为在这两种情况下,数组的大小在编译时都是已知的。

最佳答案

It's seems kinda illogical, because in both cases size of array is known in compilation time.

编译器无法区分你的例子和这个:

int i = std::rand(); // not a compile time constant
A a(i);

另一方面,它需要在编译时知道数组的大小。 A 的两个实例不能有不同的大小。所以数组的大小不能依赖于可以在运行时设置的东西。

另一方面,C++11 提供了 constexpr ,它允许您通过表达式传播编译时常量,并允许您使用它们来初始化数组。

关于c++ - 对象内的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com