C++的指针真的是有很多陷阱啊。我会在这篇文章中不断的总结一些指针使用出现的陷阱。
1.类成员指针陷阱。类成员指向成员函数的局部变量。
在给成员指针赋值的时候,容易将指针指向局部变量,局部变量在函数执行结束时会销毁,由于指针指向的是一个地址,所以但函数结束时指针会指向一个不存在的地址,这是我们的程序就会出现问题了。可以看看下面理解。
#include<iostream>
using namespace std;
class A{
public:
A(){ //错误
p = new int[1];
int b;
cout << "Enter:";
cin >> b;
p = &b;
}
//A() { //正确
// p = new int[1];
// int b;
// cout << "Enter:";
// cin >> b;
// *p = b;
//}
void output() {
cout << *p << endl;
}
private:
int *p;
};
void main() {
A a;
a.output();
system("pause");
}