书上说是: //创建一个堆中对象并用p指向它同时初始化
//该对象的成员变量x的值为99
我不明白,这只能是分配给p内容一个地址,这个指针指向A类数据。new A(99);就像new int ;不过是分配的空间大小而已,哪里来的初始化?
*p指向的对象叫什么名呢?似乎又没有名?就是说*p指向的是已经初始化但没有具体名称的对象?
追答用new创建的都是无名对象……不能丢失指向这个无名对象的指针,否则无法delete,就会内存泄漏……
你说那也应该是 A * p = new A; 为何能写成A * p =new A(99); ????
逗,你没写过A p(99) ?????这是一个意思啊……new创建无名对象也能使用构造函数的
这个顺序到底是怎样的呢?就是说先new A 读取类型,然后分配一块堆。然后A(99)初始化往堆里写入具体数据?
再把首地址赋值给p?
A * p =new A(99);就是A q(99); A*p=q;
q是没有名字的,我这里用q表示这个东西给你看。
过程就是这样,创建——初始化——赋值