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

建设部二级结构工程师注销网站整体vi设计方案

建设部二级结构工程师注销网站,整体vi设计方案,怎么做网站计划,python编程软件安装教程目录 一、匿名对象的概念 二、单参数和多参数构造场景的匿名对象 ①只有一个参数的构造函数 ②多个参数的构造函数 三、使用匿名对象作为函数的参数的缺省值 四、只为调用类中的一个函数时 五、匿名对象的特性 1、匿名对象的生命周期只有一行 2、匿名对象具有常性 3、当匿…目录 一、匿名对象的概念 二、单参数和多参数构造场景的匿名对象 ①只有一个参数的构造函数 ②多个参数的构造函数 三、使用匿名对象作为函数的参数的缺省值 四、只为调用类中的一个函数时 五、匿名对象的特性 1、匿名对象的生命周期只有一行 2、匿名对象具有常性 3、当匿名对象被引用时匿名对象的生命周期会变长 一、匿名对象的概念 匿名对象 没有对象名也不需要对象名直接使用类名创建对象如 #includeiostream 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支持使用等号来初始化刚创建的对象 ①只有一个参数的构造函数 #includeiostream 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 但是编译器认为这样太慢所以直接就对该行进行了优化从而只调用了构造函数 ②多个参数的构造函数 这时可以使用缺省参数也能实现使用等号来初始化刚创建的对象 #includeiostream using namespace std; class Date { public:Date(int year,int month5,int day10 ){_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、匿名对象的生命周期只有一行 #includeiostream using namespace std; class Date { public:Date(int year,int month5,int day10 ){_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、当匿名对象被引用时匿名对象的生命周期会变长 #includeiostream using namespace std; class Date { public:Date(int year,int month5,int day10 ){_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匿名对象的引用 看到这大家一定会有疑惑匿名对象的生命周期不是只有一行吗为什么能被引用且在后面销毁呢 原因匿名对象和引用它的对象的生命周期绑定在了一起这时匿名对象的生命周期就变长了引用它的对象的生命周期是多长该匿名对象此时的生命周期就为多长。就像一个变量引用临时变量一样临时变量的生命周期也变长了。 #includeiostream using namespace std; class Date { public:Date(int year,int month5,int day10 ){_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://www.hkea.cn/news/14256973/

相关文章:

  • 网站建设app杭州济宁网站开发公司
  • wordpress 网站生成app在北京建设教育协会的网站
  • 保定网站关键词优化网站设计策划书案例
  • 网站建设明细表深圳网站建设公司推荐
  • 营销网站 app开发深圳罗湖区网站建设
  • 青岛企业建站系统模板广东建设信息网手机版
  • 关于美术馆网站建设的方案山东泰山新闻
  • 网站seo的重要性wordpress ftp服务器
  • 江苏智能网站建设流程营销技巧电影
  • 个人建什么网站最赚钱游戏网站怎么建设
  • 学习网站建设培训电子商务网络营销方式
  • 兰州优化网站网站建设报告论文百度文库
  • 做打鱼网站的代理做一个企业网站多少钱
  • 做物流网站注意什么网站的友情链接怎么做
  • 北京网站备案江西港航建设投资有限公司网站
  • 贵州网站建设设计公司wordpress主题无法创建目录
  • 公司网站建设包含的内容qq钓鱼网站建设
  • 重庆做网站怎么做自动网站建设
  • 结合七牛云做视频网站wordpress 单本
  • 免费创网站原阳网站建设哪家好
  • 建设三轮摩托车官方网站开发小型门户网站的方法 步骤
  • mysql网站数据库代码需求网站
  • 互联网行业建设网站东莞如何制作免费的网页
  • 网站建设小组实训总结网站定制公司哪家好
  • 慈溪建设银行支行网站深圳做分销网站建设
  • 根据链接获取网站名称电商网站适合做响应式布局吗
  • 网站开发目标网站门户设计
  • 品展示设计网站wordpress下拉式友情链接
  • 网页图片提取器湖南专业关键词优化
  • 网站建设哪家好灵活苏州久远网络温州做网站制作