我正在用C++尝试OOP。我宣布了一个类testOOP
并在其中创建了一些私人成员。我用add(int x)
函数在封装数组中添加了值。但是当我试图通过printArray
方法打印它时,它输出的结果不正确。C++程序打印随机值
下面是我试过的。有人可以解释为什么我得到的结果不同于20 10 30 40
?
#include <iostream>
using namespace std;
class testOOP
{
private:
int *a;
int size;
int last;
public:
testOOP();
void add(int);
void printArray();
};
testOOP::testOOP(void){
size = 15;
last = -1;
int data[size];
a = data;
for(int i=0;i<size;i++){
*(a+i)=0;
//cout<<*(a+i);
//cout<<"\n";
}
}
void testOOP::printArray(){
for(int i=0;i<=last;i++){
cout<<*(a+i)<<" ";
}
cout<<endl;
}
void testOOP::add(int x){
if(last+1 != size){
last = last+1;
*(a+last)=x;
}
}
int main()
{
testOOP A;
A.add(20);
A.add(10);
A.add(30);
A.add(40);
A.printArray();
return 0;
}
如果可能我该如何解决这个问题?
'data'对构造函数是本地的,只要构造函数结束,它就会被销毁。那么'a'就是一个悬挂指针,你不能使用它。 – Quentin