gpt4 book ai didi

c++ - C++ 类和类模板中的可变长度数组部分

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

我问了this question前。但现在我想知道为什么以下内容也有效或无效:

class C {
int n;
int a[n];
};
template <typename T, int n> class A {
int a[n];
};

我用 g++ 测试了它们,它们似乎可以工作。在函数内部的情况下,它们与 VLA 相同,还是不同?此外,我现在也可以在堆上创建数组部分,而不是在堆栈上。

最佳答案

VLA 的大小在运行时确定。 VLA 不在 C++ 中,即使 g++ 实现了它们。

由于模板是一种编译时机制,数组A::a 的大小将在编译时确定。但是,数组 C::a 无效,因为 c::n 不是编译时常量。

尝试在启用警告和使用 -std=c++98-std=c++0x 的情况下进行编译。

关于c++ - C++ 类和类模板中的可变长度数组部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351873/

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