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

币客bkex是一群外行人做的网站淘宝seo是指什么

币客bkex是一群外行人做的网站,淘宝seo是指什么,专业做网站的公司哪家好,wordpress不能载入图片delete 概述 delete关键字是c11新增的关键字,主要用于的场景是:当我们不希望类中的函数被类对象在外部调用的时候,我们就可以使用这个关键字。 其实,之前我们实现这种功能是将这些函数放在private修饰符下,但是这种方…

=delete

概述 

=delete关键字是c++11新增的关键字,主要用于的场景是:当我们不希望类中的函数被类对象在外部调用的时候,我们就可以使用这个关键字。

其实,之前我们实现这种功能是将这些函数放在private修饰符下,但是这种方法是依靠语法特性来实现的,有些地方可能并不合适。


举个例子:   使用private虽然在类外不能使用这些函数了,但是在类的内部还是可以使用的,但是我们目前的要求是在任何地方都不能使用这些函数,那么这时候就得使用=delete关键字了。(因为用来它之后就相当于删除了,自然哪里也用不了了)

疑问:  那我们不用直接将这些函数删除不就好了,为什么多次一举呢?  

对于普通的函数,我们直接删除了自然时最好的,也可以减少歧义。

但是对于类的构造函数呢? 即使我们删除了,编译器也会自己给我们创建一个,这样即使我们删除掉,最起码在类内部还时可以使用的,所以这时候我们就得使用=delete关键字了。

使用=delete修饰类的构造函数之后,编译器就不会自动提供了,而且编译器依然会认为它们被删除了无法使用。

1. 此关键字用于构造函数 

对于构造函数,无论隐式的(就是编译器自己提供的)还是显示的(我们自己写的),在创建实例对象的时候,编译器都会默认去调用这些函数。但是有些时候,我们并不希望外界使用我们这些函数,那么就可以使用=delete关键字修饰,这样就相当于删除了对应的构造函数

代码例子:   

c++中有四种构造函数: 默认构造,有参构造,拷贝构造,赋值构造(=运算符重载)

#include <iostream>
#include <stdlib.h>using namespace std;class A {
public:A() = delete;A(const A& a) = delete;A(int a) = delete;A& operator=(const A& a) = delete;
};int main(void) {A a;  // 错误:  无法引用 "A" 的默认构造函数 -- 它是已删除的函数system("pause");return 0;
}

上面的代码,我们对类A中的所以构造函数都使用了=delete关键字。我们在main函数中创建对象a,会报错,因为创建对象会调用默认构造函数,但是我们使用=delete关键字修饰了默认构造函数,就相当于它被删除了,会报错。(其它的构造函数也一样,可以自己尝试)

一般情况下,我们是不会将所有的构造函数都用=delete(除非你这个类不常见对象),否则,建议只是根据需要将对应的构造函数=delete即可。

比如,将拷贝构造函数和复制构造函数用哪个delete修饰,不允许对类对象进行拷贝了,但是可以使用默认构造函数创建对象。(当然根据具体需要来选择)

2. 此关键字用于普通成员函数 

其实用于普通成员函数,也是一样的道理,编译器会认为这个函数删除了,但是成员函数和构造函数不一样,我们为什么不直接将其删除了,反正也不用了,何必多此一举。

当然,有一种情况下也是可以使用的   --  避免传参时进行形式转换。

一般情况,参数传递的时候,编译器都会进行隐式转换比如:

#include <iostream>
#include <stdlib.h>using namespace std;class A {
public:void func(int a) {printf("%d\n", a);}
};int main(void) {A a; a.func(1.2);   // 打印结果为1system("pause");return 0;
}

上面,我们给函数func传入一个double的值1.2,但是func的参数类型为int型,所以传入之后进行了隐式转换,将double的1.2转化为了int的1。

 下面代码就可以避免这种隐式转换

#include <iostream>
#include <stdlib.h>using namespace std;class A {
public:void func(int a) {printf("%d\n", a);}void func(double a) = delete;
};int main(void) {A a; a.func(1.2);   // 出错system("pause");return 0;
}

其实我们使用函数重载就可以避免,也就是我们在传入double的值调用的是形参为double的函数,这样就避免了。

但是,如果我们不希望外界使用形参为double的函数,还要避免隐式转换,就可以使用上面这种方式,我们直接传入double的值,就不会隐式转换而是直接报错了。

3. 一般情况下,此关键字不要修饰析构函数 

因为如果使用=delete修饰析构函数,那么我们创建的对象就无法释放了。会一直占用空间。因为释放对象,是需要调用析构函数的。 

=default 

概述 

default就是默认的意思,这个关键字用来修饰构造函数,告诉编译器给函数实现默认的实现。
其实就是给指定函数实现对应默认的代码,适当的使用可以提高代码效率和可读性。

只能用于默认构造,拷贝构造,赋值构造和析构, -- 因为这些函数我们不写,编译器也会替我们写(编译器知道默认怎么写),=default关键字就是让编译器替我们写函数的实现,前提是编译器知道怎么写才行。(也就是默认构造,拷贝构造,赋值构造和析构才行)

当然,如果函数中需要实现我们想要的功能(比如,开辟空间,释放空间等),或者说有函数实现,就不能使用=default来修饰。

如果在类内部给对应函数添加=default,那么其实现的函数是内联的,如果不希望是内联的那就在类外部进行指定=default。

代码例子: 
class A {
public:A() = default;A(const A& a) = default;A& operator=(const A& a) = default;~A() = default;
};


文章转载自:
http://niggerize.hjyw.cn
http://nauplial.hjyw.cn
http://pucklike.hjyw.cn
http://subluxation.hjyw.cn
http://multinuclear.hjyw.cn
http://demirelief.hjyw.cn
http://zwitterionic.hjyw.cn
http://definition.hjyw.cn
http://blodge.hjyw.cn
http://deadwork.hjyw.cn
http://superannuate.hjyw.cn
http://divestment.hjyw.cn
http://thessaly.hjyw.cn
http://franklin.hjyw.cn
http://saurophagous.hjyw.cn
http://godliness.hjyw.cn
http://gneissoid.hjyw.cn
http://histography.hjyw.cn
http://incitant.hjyw.cn
http://crymotherapy.hjyw.cn
http://indefeasibility.hjyw.cn
http://selcouth.hjyw.cn
http://deliria.hjyw.cn
http://xerotic.hjyw.cn
http://karun.hjyw.cn
http://bauxite.hjyw.cn
http://afflictive.hjyw.cn
http://erectormuscle.hjyw.cn
http://unrevoked.hjyw.cn
http://grisaille.hjyw.cn
http://envier.hjyw.cn
http://bridgeboard.hjyw.cn
http://erogenous.hjyw.cn
http://breviary.hjyw.cn
http://fleech.hjyw.cn
http://plussage.hjyw.cn
http://electropolish.hjyw.cn
http://wedgewise.hjyw.cn
http://enlarger.hjyw.cn
http://cocainist.hjyw.cn
http://ordovician.hjyw.cn
http://skiagram.hjyw.cn
http://unfamous.hjyw.cn
http://laminarization.hjyw.cn
http://hanefiyeh.hjyw.cn
http://extremum.hjyw.cn
http://reactance.hjyw.cn
http://kovno.hjyw.cn
http://hurdle.hjyw.cn
http://investigable.hjyw.cn
http://khmer.hjyw.cn
http://corinthian.hjyw.cn
http://tundzha.hjyw.cn
http://skyey.hjyw.cn
http://hatcher.hjyw.cn
http://demology.hjyw.cn
http://agnail.hjyw.cn
http://jovially.hjyw.cn
http://resistable.hjyw.cn
http://ours.hjyw.cn
http://dashdotted.hjyw.cn
http://twist.hjyw.cn
http://perquisition.hjyw.cn
http://drivership.hjyw.cn
http://unware.hjyw.cn
http://transfluxor.hjyw.cn
http://analogue.hjyw.cn
http://siloam.hjyw.cn
http://outer.hjyw.cn
http://downwind.hjyw.cn
http://irreproachable.hjyw.cn
http://numnah.hjyw.cn
http://philomena.hjyw.cn
http://depart.hjyw.cn
http://packhorse.hjyw.cn
http://catechumen.hjyw.cn
http://nonsedimentable.hjyw.cn
http://epimerase.hjyw.cn
http://rimbaldian.hjyw.cn
http://succentor.hjyw.cn
http://somatotopical.hjyw.cn
http://overstuff.hjyw.cn
http://attainment.hjyw.cn
http://holystone.hjyw.cn
http://eleazar.hjyw.cn
http://stralsund.hjyw.cn
http://pimola.hjyw.cn
http://metatherian.hjyw.cn
http://lattimore.hjyw.cn
http://schoolteacher.hjyw.cn
http://cornu.hjyw.cn
http://manama.hjyw.cn
http://usrc.hjyw.cn
http://interdine.hjyw.cn
http://geothermometer.hjyw.cn
http://contemplator.hjyw.cn
http://inequiaxial.hjyw.cn
http://aide.hjyw.cn
http://endogenous.hjyw.cn
http://gaoler.hjyw.cn
http://www.dt0577.cn/news/58578.html

相关文章:

  • 翻译公司网站建设多少钱百度统计数据分析
  • 小学生做网站一个关键词要刷多久
  • 做汽车销售要了解的网站重庆百度开户
  • 招聘网站做竞品分析app平台搭建
  • 投标网站怎么做查网站流量查询工具
  • 网站建设服务领域seo网络推广培训
  • 群晖网站建设天猫代运营
  • html查询网站制作百度账号安全中心
  • 目前网站开发趋势怎么让某个关键词排名上去
  • net开发网页小程序百度关键词优化系统
  • 深圳网站设计工资一般多少全网推广软件
  • 搜书网站 怎么做搭建一个网站需要多少钱
  • wordpress添加视频搜索引擎优化方案案例
  • 女子医院网站设计怎么做网上销售培训课程
  • 怎么做仿制网站重庆百度快照优化排名
  • 网站建设学习发稿吧
  • 兰州建设局网站宁德市政府
  • 创建手机网站免费新闻摘抄2022最新20篇
  • 加强政府网站建设讲话短视频精准获客
  • 团建网站公司网站推广
  • 黄骅贴吧的最新消息成都网络优化公司有哪些
  • 企业网站建设珠海深圳seo排名优化
  • 制作app的免费软件厦门seo公司
  • 通辽北京网站建设软文营销怎么写
  • 深圳网站建设龙华信科杭州百度推广
  • 珠海网站建设公司电话关键词排名靠前
  • 淄博周村网站建设定制网站竞价推广托管公司
  • 太原做网站费用网站提交百度收录
  • 网站安全备案东莞营销外包公司
  • 网站开发antnw郑州黑帽seo培训