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

潍坊网站建设公司电话福州网站seo优化公司

潍坊网站建设公司电话,福州网站seo优化公司,南阳教育论坛网站建设,福州建站模板目录 一、匿名对象的概念 二、单参数和多参数构造场景的匿名对象 ①只有一个参数的构造函数 ②多个参数的构造函数 三、使用匿名对象作为函数的参数的缺省值 四、只为调用类中的一个函数时 五、匿名对象的特性 1、匿名对象的生命周期只有一行 2、匿名对象具有常性 3、当匿…

目录

一、匿名对象的概念

二、单参数和多参数构造场景的匿名对象

①只有一个参数的构造函数

②多个参数的构造函数

三、使用匿名对象作为函数的参数的缺省值

四、只为调用类中的一个函数时

五、匿名对象的特性

1、匿名对象的生命周期只有一行

2、匿名对象具有常性

3、当匿名对象被引用时,匿名对象的生命周期会变长


一、匿名对象的概念

匿名对象:

没有对象名,也不需要对象名,直接使用类名创建对象,如:

#include<iostream>
using namespace std;
class Date
{
public:Date(int a = 1, int b = 7){_a = a;_b = b;}~Date(){cout << "析构~Date()" << endl;}
private:int _a;int _b;
};
int main()
{Date();//匿名对象return 0;
}

二、单参数和多参数构造场景的匿名对象

对于单参数的构造函数,C++支持使用等号(=)来初始化刚创建的对象

①只有一个参数的构造函数

#include<iostream>
using namespace std;
class Date
{
public:Date(int year ){_year = year;}~Date(){cout << "析构~Date()" << endl;}
private:int _year;
};
int main()
{   //编译时,实际变为了 Date d = Date(2023)Date d = 2023;//这一步发生了隐式类型转换return 0;
}

使用等号(=)创建匿名对象时,会发生隐式类型转换,先通过构造函数生成一个匿名对象(临时对象),然后通过拷贝构造将该对象的值赋给刚创建的对象d

但是编译器认为这样太慢,所以直接就对该行进行了优化,从而只调用了构造函数

②多个参数的构造函数

这时可以使用缺省参数也能实现使用等号(=)来初始化刚创建的对象

#include<iostream>
using namespace std;
class Date
{
public:Date(int year,int month=5,int day=10 ){_year = year;_month = month;_day = day;}~Date(){cout << "析构~Date()" << endl;}
private:int _year;int _month;int _day;
};
int main()
{   //编译时,实际变为了 Date d = Date(2023)Date d = 2023;//这一步发生了隐式类型转换return 0;
}

通过调试发现,多参数也可以使用等号(=)初始化刚创建的对象

三、使用匿名对象作为函数的参数的缺省值

该使用场景在函数模板是比较常见的,当我们不确定参数的类型时可以使用匿名对象作为缺省值来给该参数指定一个默认的值,如:

vector(size_t n, const T& val = T())//vector构造函数{}
//T()表示匿名对象

在STL中就用到了匿名对象来定义vector的构造函数 

四、只为调用类中的一个函数时

当我们只想调用类中的一个函数时,发现如果没有类的实例化就无法调用,这时就必须创建一个类对象才能调用,这样是不是就很糟糕呢,因为实例化一个对象就会申请空间,占用了多余的内存空间,这时我们就可以使用匿名对象来调用,如:

class Solution {
public:
int Sum_Solution(int n) {
//...
return n;
}
};int main()
{// 匿名对象在这样场景下就很好用Solution().Sum_Solution(10);return 0;
}

这时使用匿名对象就不会占用多余的空间,因为匿名对象的声明周期只有一行,改行结束就会销毁

五、匿名对象的特性

1、匿名对象的生命周期只有一行

#include<iostream>
using namespace std;
class Date
{
public:Date(int year,int month=5,int day=10 ){_year = year;_month = month;_day = day;}~Date(){cout << _year << '-' << _month << '-' << _day << endl;cout << "析构~Date()" << endl;}
private:int _year;int _month;int _day;
};
int main()
{  Date(2023);//匿名对象Date d(2023, 5, 9);return 0;
}

通过结果我们可以发现,匿名对象的生命周期只有一行,因为对象的销毁顺序是 先创建的后销毁,后创建的先销毁。显然这里先销毁的匿名对象,而匿名对象又是先创建的,所以可以说明匿名对象的生命周期只有这一行

2、匿名对象具有常性

当我们这样引用时,可以发现是报错的

Date& d = Date(2023);//属于权限被放大的错误

当我们加上const修饰对象d时:

const Date& d = Date(2023);

 原因:匿名对象作为一个临时变量具有常性,当我们引用时不加const修饰就会发生权限被放大的问题,所以发生报错,权限可以被缩小和平移但不能被放大

3、当匿名对象被引用时,匿名对象的生命周期会变长

#include<iostream>
using namespace std;
class Date
{
public:Date(int year,int month=5,int day=10 ){_year = year;_month = month;_day = day;}~Date(){cout << _year << '-' << _month << '-' << _day << endl;cout << "析构~Date()" << endl;}
private:int _year;int _month;int _day;
};
int main()
{  const Date& d = Date(2023);//引用匿名对象Date d2(2023, 5, 9);return 0;
}

结果:

 通过结果可以发现,先销毁的是后创建的对象d2后销毁的是先创建的对象d(匿名对象的引用)

看到这大家一定会有疑惑,匿名对象的生命周期不是只有一行吗,为什么能被引用,且在后面销毁呢?

原因:匿名对象和引用它的对象的生命周期绑定在了一起,这时匿名对象的生命周期就变长了,引用它的对象的生命周期是多长,该匿名对象此时的生命周期就为多长。就像一个变量引用临时变量一样,临时变量的生命周期也变长了。

#include<iostream>
using namespace std;
class Date
{
public:Date(int year,int month=5,int day=10 ){_year = year;_month = month;_day = day;}~Date(){cout << _year << '-' << _month << '-' << _day << endl;cout << "析构~Date()" << endl;}
private:int _year;int _month;int _day;
};
const Date& d3 = Date(2023,5,8);//全局对象引用
int main()
{  static const Date& d = Date(2023);//局部对象引用Date d2(2023, 5, 9);return 0;
}

结果:

 可以发现,匿名对象的生命周期确实和引用该匿名对象的对象的生命周期绑定了

匿名对象的知识就分享到这了,如有错误的地方还请不吝指出,谢谢了,886!!!


文章转载自:
http://swimmingly.gtqx.cn
http://ecdysterone.gtqx.cn
http://perinuclear.gtqx.cn
http://hamadan.gtqx.cn
http://enervated.gtqx.cn
http://jcl.gtqx.cn
http://enteron.gtqx.cn
http://lupanar.gtqx.cn
http://eutychian.gtqx.cn
http://pantothenate.gtqx.cn
http://devolatilization.gtqx.cn
http://reagency.gtqx.cn
http://xu.gtqx.cn
http://chaperonage.gtqx.cn
http://ascribable.gtqx.cn
http://piecrust.gtqx.cn
http://aggrade.gtqx.cn
http://cattalo.gtqx.cn
http://chiasm.gtqx.cn
http://fabular.gtqx.cn
http://whity.gtqx.cn
http://online.gtqx.cn
http://sheerlegs.gtqx.cn
http://chon.gtqx.cn
http://millions.gtqx.cn
http://mdr.gtqx.cn
http://promptive.gtqx.cn
http://byob.gtqx.cn
http://seafaring.gtqx.cn
http://evidence.gtqx.cn
http://cheekbone.gtqx.cn
http://ellis.gtqx.cn
http://mousetrap.gtqx.cn
http://antennule.gtqx.cn
http://apache.gtqx.cn
http://mouseproof.gtqx.cn
http://merohedral.gtqx.cn
http://bricole.gtqx.cn
http://vir.gtqx.cn
http://portend.gtqx.cn
http://marcionism.gtqx.cn
http://chaldaea.gtqx.cn
http://gerontocracy.gtqx.cn
http://abaptiston.gtqx.cn
http://requirement.gtqx.cn
http://impendency.gtqx.cn
http://medalet.gtqx.cn
http://spiritism.gtqx.cn
http://doctrinism.gtqx.cn
http://caplet.gtqx.cn
http://removable.gtqx.cn
http://flackery.gtqx.cn
http://handloader.gtqx.cn
http://charily.gtqx.cn
http://reposit.gtqx.cn
http://featurish.gtqx.cn
http://blanketyblank.gtqx.cn
http://hymnographer.gtqx.cn
http://marengo.gtqx.cn
http://aerobe.gtqx.cn
http://sahaptan.gtqx.cn
http://poetaster.gtqx.cn
http://syconium.gtqx.cn
http://tribasic.gtqx.cn
http://soaked.gtqx.cn
http://incretory.gtqx.cn
http://think.gtqx.cn
http://isodose.gtqx.cn
http://inappropriately.gtqx.cn
http://pronate.gtqx.cn
http://soapstone.gtqx.cn
http://hummaul.gtqx.cn
http://manducate.gtqx.cn
http://dulcite.gtqx.cn
http://uncio.gtqx.cn
http://robotnik.gtqx.cn
http://deckie.gtqx.cn
http://doughboy.gtqx.cn
http://areologist.gtqx.cn
http://hallucinatory.gtqx.cn
http://comprimario.gtqx.cn
http://deductive.gtqx.cn
http://wheelwork.gtqx.cn
http://tampa.gtqx.cn
http://overflight.gtqx.cn
http://unlonely.gtqx.cn
http://kingbird.gtqx.cn
http://scratchy.gtqx.cn
http://interphase.gtqx.cn
http://permafrost.gtqx.cn
http://unpeg.gtqx.cn
http://during.gtqx.cn
http://ashcake.gtqx.cn
http://lauryl.gtqx.cn
http://hashemite.gtqx.cn
http://rheoreceptor.gtqx.cn
http://latticinio.gtqx.cn
http://biocritical.gtqx.cn
http://rebill.gtqx.cn
http://fratry.gtqx.cn
http://www.15wanjia.com/news/93899.html

相关文章:

  • 合肥网站设计机构如何设置友情链接
  • 网站建设日程表模板深圳百度seo代理
  • 武汉网站设计制作百度大全
  • 门户网站建设需要注意什么网络营销专业大学排名
  • 郑州高端网站建设怎么样流量精灵官网
  • xuzhou公司网站制作青岛专业网站制作
  • 网站建设产品需求文档免费b站推广网站入口
  • 网站竞价推广都有哪些培训学校机构
  • 自做头像的网站韩国电视剧
  • django 做网站赚钱推广引流方法有哪些?
  • 网站建设 铭阳传媒深圳网络推广市场
  • 网站主机名百度推广开户渠道
  • wordpress主题黑糖优化工具箱
  • 创新的福州网站建设百度网盘手机版
  • 一个网站多个域名的seo优化百度官网首页入口
  • 服装电子商务网站建设与实现郑州seo实战培训
  • 网站广告条素材百度seo关键词优化市场
  • 海外购物网站上填手机号码怎么做免费的个人网页
  • 求一个全部用div做的网站网推项目
  • 淫秽色情网站境外的windows优化大师手机版
  • 建设网站宽度最好是多少360优化关键词
  • 音乐类网站页面设计特点seo优化前景
  • wordpress生成了太多图片seo自学网视频教程
  • 老师用什么网站做ppt北京seo方法
  • 新加坡网站制作站长工具精华
  • 网站与网页的区别百度网页版登录入口
  • 如何做电商网站 昆明网站在线制作
  • 电商网站模板素材百度云盘网页版
  • 百度app平台seo手机关键词排行推广
  • 网络销售有哪些宝鸡seo优化公司