当前位置: 首页 > wzjs >正文

广西城乡和建设厅网站首页搜索引擎营销总结

广西城乡和建设厅网站首页,搜索引擎营销总结,网站功能插件,北京做机床的公司网站前言:之前在搓高并发内存池的时候就在想,类对象不能调用自身的构造函数,那直接申请内存出来的类对象岂不是很难受,然后我这两天仔细研究了一下,发现其实构造函数也可以显示去调用,而且含不限量,故做此文 在c中一个类对象不能直接调用自身的构造 class A { public:A() {cout &l…

前言:之前在搓高并发内存池的时候就在想,类对象不能调用自身的构造函数,那直接申请内存出来的类对象岂不是很难受,然后我这两天仔细研究了一下,发现其实构造函数也可以显示去调用,而且含不限量,故做此文

在c++中一个类对象不能直接调用自身的构造

class A {
public:A() {cout << this << endl;cout << "构造函数" << endl;}~A() {cout << this << endl;cout << "析构函数" << endl;}
private:int _a;double _b;char* _c;
};int main() {cout << "a对象创建" << endl;{A* a = (A*)malloc(sizeof(A));}cout << "a对象销毁" << endl;system("pause");
}

显然没有析构也没有构造

这时我们可以通过new的一种高级用法来显示去调用构造析构

语法如下

        A* obj = new (a) A;        

请注意这条语句没有构造新的A类型


class A {
public:A() {cout << this << endl;cout << "构造函数" << endl;}~A() {cout << this << endl;cout << "析构函数" << endl;}
private:int _a;double _b;char* _c;
};int main() {cout << "a对象创建" << endl;{A* a = (A*)malloc(sizeof(A));A* obj = new (a) A;cout << a << endl;cout << obj << endl;}cout << "a对象销毁" << endl;system("pause");
}

看到调用构造函数时obj的值与a的值是相同的,所以它的底层其实是偷偷摸摸去调了构造,然后把a拷贝给obj

上一种情况是指针,这里使用类再来一次

class A {
public:A() {cout << this << endl;cout << "构造函数" << endl;}~A() {cout << this << endl;cout << "析构函数" << endl;}
private:int _a;double _b;char* _c;
};int main() {cout << "a对象创建" << endl;{//A* a = (A*)malloc(sizeof(A));//A* obj = new (a) A;//cout << a << endl;//cout << obj << endl;A a;cout << "a 的地址为 : " << &a << endl;cout << "这里显示的调一次构造" << endl;new (&a)A;}cout << "a对象销毁" << endl;system("pause");
}

看一下反汇编,按我的水平进行一次粗浅的理解的话就是去调用一个拷贝,然后调用构造,较于普通new的话不需要额外开辟空间(想了解更仔细的话可以问问ai,不要信我胡诌的)

		new (&a)A;
00007FF7A6370037  lea         rdx,[rbp+8]  
00007FF7A637003B  mov         ecx,18h  
00007FF7A6370040  call        operator new (07FF7A6361668h)  
00007FF7A6370045  mov         qword ptr [rbp+0F8h],rax  
00007FF7A637004C  mov         rcx,qword ptr [rbp+0F8h]  
00007FF7A6370053  call        A::A (07FF7A63618D9h)  new (A);
00007FF7A6370058  mov         ecx,18h  
00007FF7A637005D  call        operator new (07FF7A6361069h)  
00007FF7A6370062  mov         qword ptr [rbp+138h],rax  
00007FF7A6370069  cmp         qword ptr [rbp+138h],0  
00007FF7A6370071  je          __$EncStackInitStart+14Ah (07FF7A6370099h)  
00007FF7A6370073  mov         edx,18h  
00007FF7A6370078  mov         rcx,qword ptr [rbp+138h]  
00007FF7A637007F  call        A::__autoclassinit2 (07FF7A63618DEh)  
00007FF7A6370084  mov         rcx,qword ptr [rbp+138h]  
00007FF7A637008B  call        A::A (07FF7A63618D9h)  
00007FF7A6370090  mov         qword ptr [rbp+148h],rax  
00007FF7A6370097  jmp         __$EncStackInitStart+155h (07FF7A63700A4h)  
00007FF7A6370099  mov         qword ptr [rbp+148h],0  
00007FF7A63700A4  mov         rax,qword ptr [rbp+148h]  
00007FF7A63700AB  mov         qword ptr [rbp+118h],rax 

感谢观看

http://www.dtcms.com/wzjs/469563.html

相关文章:

  • wordpress 门户主题北京网站建设东轩seo
  • 医疗器械行业pc网站优化排名软件
  • 只做传统嫁衣网站seo专员是什么职位
  • 时彩网站开发营销策略有哪几种
  • 赛门博网站建设中关村标准化协会
  • 宁波专业网站建设模板服务深圳做seo有哪些公司
  • 官方网站查询叉车证搜索引擎关键词seo优化公司
  • 全国信用企业信息系统武汉seo 网络推广
  • 保定网站制作网页百度地图下载2022新版安装
  • 软件应用商店排行榜网页优化包括
  • vi设计获奖作品seo搜索引擎优化求职简历
  • 自己怎么做网站视频赚钱吗无锡网站制作优化
  • 网站办理公安备案吗免费推广途径
  • 百度投广告怎么收费青岛 google seo
  • 网站顶部轮播怎么做怎么去推广自己的公司
  • 建立抗日民族统一战线的会议网站建设优化收费
  • 搭建网站有费用吗有哪些网站可以免费推广
  • 做海报的话网站新手学百度竞价要多久
  • 新乡哪个公司做网站好游戏推广员骗局
  • wordpress广告链接合肥seo报价
  • 专门做网站的软件baidu com百度一下
  • dede复制网站模板网上营销培训课程
  • 免费的做微博的网站模板关键词排名优化易下拉霸屏
  • 商城版网站建设中国互联网电视app下载安装
  • 云服务器网站崩溃的原因软文是什么意思?
  • 二七网建站南京百度seo代理
  • 无锡市网站建设谷歌推广技巧
  • 福州seo网络推广seo百度点击软件
  • 建站哪家好要认定兴田德润seo关键词排名优化哪家好
  • 仿做网站的网站免费网站seo诊断