请考虑以下代码:
class myarray
{
int i;
public:
myarray(int a) : i(a){ }
}
Run Code Online (Sandbox Code Playgroud)
如何在堆栈上创建myarray对象数组,如何在堆上创建对象数组?
只要变量是const,初始化可变大小的数组时GCC不会出错,但是当它不是时,它就不会编译.
这背后的原因是什么?这样做有什么不妥:
int size = 7;
int test[size] = {3, 4, 5};
Run Code Online (Sandbox Code Playgroud)
根本不会编译,但如果我不初始化test []那么它会编译!这对我来说没有任何意义,因为据我所知,无论什么(这意味着我使用的整数文字都不是真的),需要根据它的大小(7个整数)来使堆栈框架适合这个数组.如果我没有弄错的话,有任何意义,那么如果我初始化它会有什么不同?
只是我疯狂的C++设计问题中的另一个......
谢谢!