C++中都什么时候需要给一个指针new一段空间啊?

来源:百度知道 编辑:UC知道 时间:2024/05/06 01:24:32
int _tmain(int argc, _TCHAR* argv[])
{
A *a;
a->print();
return 0;
}

我这样不new空间为什么会运行出错?

要new 一段空间是因为如果不初始化,指针就是野指针,它的值是随机的,你访问一个随机的地址当然会出错。它有可能是任何的东西,你如果能确定它随机的那个地址也是你初始化过的一个对象的地址那就不会出错,但是你不能确定,它是随机的,所以必须给它分配一个空间。

你的指针必须要指向一个对象才可以(只要指针不为空指针就可以)...
A *a,*b;
a=new A();
b=a;
比如这里b也可以不new,因为它有指向的对象(和a是同一个)

你的a指针没有指向某一内存空间,那么它就不可能执行print()方法,所以会出错。
如果你要执行方法,就需要指定内存空间。

你现在的指针并没有指向一个具体的对象,属于悬挂指针,所以会有错啊,指针一定要指向一个具体的对象才可以做
p->print()这样的函数调用