问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++重载new 为什么会调用两次构造函数

发布网友 发布时间: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>

using namespace std;
static int i = 1;
class mystr
{
public:

        mystr()
        {
                if(i == 1)
                    cout << "mystr1" << endl;
                else
                    cout << "mystr2" << endl;
        }
        ~mystr()
        {
                cout << "~mystr" << endl;
        }
        void * operator new(size_t size)
        {

                cout << "对象被创建" << endl;
                mystr *my1 = ::new mystr;
                i=2;
                return my1;
        }
};

int main()
{
        mystr *my1=new mystr;

getchar();
        return 0;
}

我们通过一个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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海什么酒店最高大上 业精于勤荒于嬉。行成于思毁于随 ""业精于勤,荒于嬉,行成于思,毁于随"是什么意思?解释的好点 文才神摆在阳台东南面朝窗户好吗 高锰酸钾鱼缸要泡多久合适 高锰酸钾泡鱼缸的时间介绍 高锰酸钾浸盆要多久 高锰酸钾浸泡需要的时间是多久? 高锰酸钾要泡多久合适 高锰酸钾要泡多长时间合适 天气炎热,长途车下面放行李的地方放活的黄鳝会死吗 15款明锐1.4 t烧机油吗 ...年斯柯达明锐换了四个点火线圈四个火花塞油耗增大两升左右为什么... 小升初怎么摇号派位 重庆民办小升初摇号怎么摇? 2021年武汉小升初全面摇号吗? 剑侠陆剑忠是哪个演员演的 冰附魔石4级是附魔多少点 陌生人转账给你然后说转错了,让你再转回去,这是什么新型骗局... ...诈骗的事件频发,民众应该如何提防这种新型诈骗? ...感觉就玩不到一起 我喜欢和我闺蜜一起去玩怎么回复? 墙面抹灰厚度要求 汽车营销策略有哪些 汽车4S店有哪些服务营销的策略? 考试跨年级交叉阅卷的利与弊 电视剧金太郎的幸福生活中饰演女主角小米妈妈的是哪位著名小品女... 演示实验:小孔成像原理? 小孔成像实验原理是什么? 蜡烛的像会随着蜡烛与走马灯中心轴线的距离改变吗 如何用蜡烛和小孔成像的道理来演示走马灯 蜡烛距离立轴远近的不同实验如何演示? 科举职官中"〖殿试〗的录取者称为什么 又惊梦是谁唱的? ...a (4),b[3],*p”语句时,自动调用该类构造函数的次数为4 ...可以解答:英文短语:"对...有害"?(带有harm的短语)谢谢告知!!!_百度... 青花信物是什么意思(青花信物代表什么意思) 西药维生素C 如今药槽一般用于什么地方?有和用途? 胃槽是什么意思药? ...还有点白色。药片是圆片。药片中间是一个圆眼.就是一个窟窿. 管嗓... 抚顺龙云智能科技有限公司怎么样 给10岁孩子吃钙铁锌,3样合成1片的有效果吗,什么时间段吃好呢 excel单元格中输入一串数字,如何保留前导的0 适合全流质人喝的汤 噻虫胺能杀死黑地珠蚧 ...三个变量和一个状态变量M,M=1时,电路实现意见一致功能? 三变量一致输出真的存在吗 水晶的寓意水晶象征着什么 不同颜色的水晶代表的寓意 广州与马来西亚的时间差距 山行这首诗中,诗人最喜欢什么?为什么 一百厘米等于几米 高中数学,椭圆里,三角形面积 怎么推理