iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++声明放置正确的应用方式是怎样的
  • 284
分享到

C++声明放置正确的应用方式是怎样的

2023-06-17 16:06:52 284人浏览 独家记忆
摘要

c++声明放置正确的应用方式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++编程语言既然被看做是C语言的升级版本,它必然会具有C语言中的很多功能。不过其中还是有很多

c++声明放置正确的应用方式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

C++编程语言既然被看做是C语言的升级版本,它必然会具有C语言中的很多功能。不过其中还是有很多比C语言更加优化的功能。比如C++声明的一些内容等。C++声明放置将会对性能产生显著影响。同样,对postfix和prefix运算符的选择也会影响性能。这一部分我们集中讨论四个问题:初始化v.s 赋值,在程序确实要使用的地方放置声明,构造函数的初始化列表,prefix v.s postfix运算符。

C++编程语言可以支持很多程序设计风格,能够在很大程度上帮助开发人员提高开发效率。初学者们可能还对C++中的声明有些不太明白,在这里我们将会为大家详细介绍一下C++声明放置的相关方法,方便大家理解。

(1) 请使用初始化而不是赋值

在C语言中只允许在一个函数体的开头进行变量的声明,然而C++声明放置可以出现在程序的任何位置。这样做的目的是希望把对象的声明拖延到确实要使用它的时候再进行。这样做可以有两个好处:

确保了对象在它被使用前不会被程序的其他部分恶意修改。如果对象在开头就被声明然而却在20行以后才被使用的话,就不能做这样的保证。

使我们有机会通过用初始化取代赋值来达到性能的提升,从前声明只能放在开头,然而往往开始的时候我们还没有获得我们想要的值,因此初始化所带来的好处就无法被应用。但是现在我们可以在我们获得了想要的值的时候直接进行初始化,从而省去了一步。

注意,或许对于基本类型来说,初始化和赋值之间可能不会有什么差异,但是对于用户定义的类型来说,二者就会带来显著的不同,因为赋值会多进行一次函数调用----operator =。因此当我们在赋值和初始化之间进行选择的话,初始化应该是我们的***。

(2) C++声明放置在合适的位置

在一些场合,通过移动声明到合适的位置所带来的性能提升应该引起我们足够的重视。例如:

bool is_C_Needed();   void use()   {   C c1;   if (is_C_Needed() == false)   {   return; //c1 was not needed   }   //use c1 here   return;   }

上面这段代码中对象c1即使在有可能不使用它的情况下也会被创建,这样我们就会为它付出不必要的花费,有可能你会说一个对象c1能浪费多少时间,但是如果是这种情况呢:C c1[1000];我想就不是说浪费就浪费了。但是我们可以通过移动声明c1的位置来改变这种情况:

void use()   {   if (is_C_Needed() == false)   {   return; //c1 was not needed   }   C c1; //moved from the block's beginning   //use c1 here   return;   }

怎么样,程序的性能是不是已经得到很大的改善了呢?因此请仔细分析你的代码,C++声明放置所带来的好处是你难以想象的。

(3) 初始化列表

我们都知道,初始化列表一般是用来初始化const或者reference数据成员。但是由于他自身的性质,我们可以通过使用初始化列表来实现性能的提升。我们先来看一段程序:

class Person   {   private:   C c_1;   C c_2;   public:   Person(const C& c1, const C& c2 ): c_1(c1), c_2(c2) {}   };

当然构造函数我们也可以这样写:

Person::Person(const C& c1, const C& c2)   {   c_1 = c1;   c_2 = c2;   }

那么究竟二者会带来什么样的性能差异呢,要想搞清楚这个问题,我们首先要搞清楚二者是如何执行的,先来看初始化列表:数据成员的声明操作都是在构造函数执行之前就完成了,在构造函数中往往完成的只是赋值操作,然而初始化列表直接是在数据成员声明的时候就进行了初始化,因此它只执行了一次copy constructor。再来看在构造函数中赋值的情况:首先,在构造函数执行前会通过default constructor创建数据成员,然后在构造函数中通过operator =进行赋值。因此它就比初始化列表多进行了一次函数调用。性能差异就出来了。但是请注意,如果你的数据成员都是基本类型的话,那么为了程序的可读性就不要使用初始化列表了,因为编译器对两者产生的汇编代码是相同的。

(4) postfix VS prefix 运算符

prefix运算符++和—比它的postfix版本效率更高,因为当postfix运算符被使用的时候,会需要一个临时对象来保存改变以前的值。对于基本类型,编译器会消除这一份额外的拷贝,但是对于用户定义类型,这似乎是不可能的。因此请你尽可能使用prefix运算符。

看完上述内容,你们掌握C++声明放置正确的应用方式是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网其他教程频道,感谢各位的阅读!

--结束END--

本文标题: C++声明放置正确的应用方式是怎样的

本文链接: https://www.lsjlt.com/news/290835.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++声明放置正确的应用方式是怎样的
    C++声明放置正确的应用方式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++编程语言既然被看做是C语言的升级版本,它必然会具有C语言中的很多功能。不过其中还是有很多...
    99+
    2023-06-17
  • Java和C#顶层声明概述是怎样的
    Java和C#顶层声明概述是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在向大家详细介绍Java和C#顶层声明之前,首先让大家分别了解下Java中的顶层...
    99+
    2023-06-17
  • XP系统下正确卸载应用程序的方法是怎样的
    XP系统下正确卸载应用程序的方法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  开始——添加/删除程序—&...
    99+
    2023-06-14
  • Mybatis重置Criteria的正确姿势是怎么样的
    这期内容当中小编将会给大家带来有关Mybatis重置Criteria的正确姿势是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Mybatis重置Criteria开发中遇到Mybatis生成的Exa...
    99+
    2023-06-22
  • C++ static不同的应用方式分别是怎样的
    C++ static不同的应用方式分别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++编程语言的应用方式和其他语言特别是C语言有很多不同之处。那么今天大家就可以从C...
    99+
    2023-06-17
  • Vista SP1安装最正确的方法是怎样的
    这期内容当中小编将会给大家带来有关Vista SP1安装最正确的方法是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。以Vista SP1 build 6001.17036 v.652为蓝本介绍的安装...
    99+
    2023-06-13
  • C#使用HttpClient的正确方式你了解吗
    目录错误使用New HttpClientstatic HttpClient正确使用错误使用 New HttpClient 如下面一段代码,日常开发中经常使用的 call http 方...
    99+
    2024-04-02
  • .NET正则类及其方法应用是怎样的
    本篇文章为大家展示了.NET正则类及其方法应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 概述初学正则时,对于Regex类不熟悉,遇到问题不知道该用哪种方法解决,本文结合一些...
    99+
    2023-06-17
  • PHP中使用NumPy进行响应重定向的正确方式是什么?
    在Web开发中,重定向是一项常见的技术。重定向可以帮助我们把用户从一个页面或URL重定向到另一个页面或URL,从而实现多种功能,例如:登录后跳转到主页、错误页面跳转到错误提示页面等等。在PHP中,使用NumPy库来实现重定向是一种非常常见...
    99+
    2023-09-30
    numy 响应 重定向
  • 正则表达式用法是怎么样的
    本篇文章给大家分享的是有关正则表达式用法是怎么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。正则表达式之基本概念在我们写页面时,往往需要对表单的数据比如账号、身份证号等进行...
    99+
    2023-06-22
  • 聆听用户心声,优化网站之旅:CMS用户反馈的正确打开方式
    CMS用户反馈是优化网站的重要途径,通过收集和分析用户反馈,网站管理员可以发现网站存在的各种问题,并及时采取措施进行改进。这不仅可以提升用户体验,还可以提高网站的性能,吸引更多的用户。 一、收集用户反馈 收集用户反馈的方法有很多,最常见...
    99+
    2024-02-12
    CMS 用户反馈 网站优化 用户体验
  • MySQL数据类型中数字类型的正确使用是怎样的
    MySQL数据类型中数字类型的正确使用是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  无论是在小得可怜的免费空间或是...
    99+
    2024-04-02
  • PHP对象:在Windows和Linux上的正确使用方式是什么?
    PHP是一种广泛使用的Web编程语言,它具有简单易学、高效快速等特点,但在不同的操作系统上,其对象使用方式存在一定差异。在本文中,我们将探讨如何在Windows和Linux上正确使用PHP对象。 一、PHP对象的定义 PHP对象是指封装了数...
    99+
    2023-08-15
    对象 windows linux
  • css层叠样式表的三种应用方式是什么
    CSS层叠样式表是一种用于控制网页样式和布局的语言,具有广泛的应用。在CSS中,有三种应用方式,分别是内联样式、内部样式和外部样式。下面将为您详细介绍这三种应用方式,并附上具体的代码示...
    99+
    2024-02-22
    html元素
  • ajax的json传值方式在jsp页面中的应用是怎样的
    本篇文章给大家分享的是有关ajax的json传值方式在jsp页面中的应用是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2024-04-02
  • Java中config的简单配置shh方式是怎样的
    Java中config的简单配置shh方式是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。创建项目需要添加的依赖:<dependency><grou...
    99+
    2023-06-05
  • Python中正则表达式的巧妙用法是怎么样的
    Python中正则表达式的巧妙用法是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 前言正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打...
    99+
    2023-06-16
  • 正则表达式的概述和简单使用是怎样的
    本篇文章为大家展示了的概述和简单使用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。正则表达式的概述和简单使用* A:正则表达式        * 是指...
    99+
    2023-06-02
  • CentOS 常用配置方法是怎样的
    这期内容当中小编将会给大家带来有关CentOS 常用配置方法是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。配置IP地址: cat /etc/sysconfig/network-scripts/if...
    99+
    2023-06-10
  • C/C++ Qt StatusBar底部状态栏应用是怎么样的
    这篇文章将为大家详细讲解有关C/C++ Qt StatusBar底部状态栏应用是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Qt窗体中默认会附加一个Qstatu...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作