C++ 两种语法new(int[size])和new int[size]之间的差异
此文本运行时没有任何警告或错误C++ 两种语法new(int[size])和new int[size]之间的差异,c++,C++,此文本运行时没有任何警告或错误 int*iPtr; 无符号整数大小; cin>>尺寸; iPtr=新的整数[大小]; 这一个返回警告但效果很好为什么 警告:必须在类型id[-Wvla]周围不带括号地指定非常量数组新长度 iPtr=新(整数[大小]) int*iPtr; 无符号整数大小; cin>>尺寸; iPtr=新(整数[大小]); < > >此特殊警告是因为C++中不允许使用可变长度数组而发出的。括号使编译器将int[size]视为可变长度数组 这就是警告中对应的-Wvla 如果为size
int*iPtr;
无符号整数大小;
cin>>尺寸;
iPtr=新的整数[大小];
这一个返回警告但效果很好为什么强>
警告:必须在类型id[-Wvla]周围不带括号地指定非常量数组新长度
iPtr=新(整数[大小])
int*iPtr;
无符号整数大小;
cin>>尺寸;
iPtr=新(整数[大小]);
< > >此特殊警告是因为C++中不允许使用可变长度数组而发出的。括号使编译器将int[size]
视为可变长度数组
这就是警告中对应的-Wvla
如果为size
指定常量值而不是用户指定的值,则可以使用括号
int main() {
unsigned int* iPtr;
constexpr unsigned int size = 10;
iPtr = new (unsigned int[size]);
}
<> > <>强> >/P>> P>,因为C++中不允许使用可变长度数组,所以发出了这个特殊警告。括号使编译器将int[size]
视为可变长度数组
这就是警告中对应的-Wvla
如果为size
指定常量值而不是用户指定的值,则可以使用括号
int main() {
unsigned int* iPtr;
constexpr unsigned int size = 10;
iPtr = new (unsigned int[size]);
}
参见这只是new
的规则这只是new
的规则可以,但仍然不应该<代码>新建
不是一个函数。可以,但仍然不应该<代码>新建不是一项功能。