jaz*_*azz 2 c++ arrays class dynamic
这是一个类,它基本上是一个数字数组,我想在其上执行一些操作.
class MyClass {
public:
MyClass() { //constructor
int * array = new int[n];
for(int i = 0; i < n; i++) {
array[i] = i*i;
}
} //end constructor
int displayIthElement(int i) {
return array[i];
}
}
Run Code Online (Sandbox Code Playgroud)
我得到:错误,在displayIthElement函数中未定义标识符"array".就像数组数组在构造函数之外停止存在一样,这没有任何意义.问题是什么?
非常感谢你.
就像数组数组在构造函数之外停止存在一样,这没有任何意义.
实际上,这是唯一有意义的行为......这就是语言的运作方式.
array是在构造函数中声明和定义的局部变量.当构造函数退出时,指针变量被破坏,并且泄漏它所引用的内存.分配有new或new [] 总是需要相应的内存delete或delete []在其引用之前的内存超出范围.总是.
array应该是班上的一员.你在学习,所以这是弄清楚如何动态内存处理工作是个好主意,但在未来,更喜欢安全的容器(即std::unique_ptr,std::vector等),其中处理分配和释放你.
class foo {
public:
foo() {
array = new int[length];
for(int i = 0; i < length; i++) {
array[i] = i*i;
}
}
private:
int *array; // when does this get deallocated? Look up RAII
};
Run Code Online (Sandbox Code Playgroud)