发布网友 发布时间:2024-06-01 20:20
共4个回答
热心网友 时间:2024-06-13 12:41
因为 new 执行了2次。
你重载了new 而且在new里又调用了 ::new,所以创建了2个对象。
重载的成员函数 new 里面只能::new其他的类型,不能new这个类本身。
如果需要创建这个类本身的话,应该要用malloc, malloc在分配完内存后,并不会初始化。
热心网友 时间:2024-06-13 12:40
因为你代码重载的new函数定义里面调用了全局 ::new,每次使用new都要调用一次构造函数。热心网友 时间:2024-06-13 12:42
因为 new 执行了2次。
重载了new 而且在new里又调用了 ::new,所以创建了2个对象。
重载的成员函数 new 里面只能::new其他的类型,不能new这个类本身。
如果需要创建这个类本身的话,应该要用malloc, malloc在分配完内存后,并不会初始化。
热心网友 时间:2024-06-13 12:36
#include <iostream>我们通过一个static i来看发生的顺序
mystr *my1=new mystr;//这里有一个先后顺序先分配内存空间,是new的事件,再执行构造.
执行new, mystr *my1 = ::new mystr;这里此时i=1,执行构造函数,输出
对象被创建
mystr1
i=2,返回main
mystr *my1=new mystr;//new已经执行完执行构造函数,i==2 输出mystr2