`
mx19841031
  • 浏览: 74705 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

临时变量、局部变量,return的效率

 
阅读更多

如果函数返回值是一个对象,要考虑 return 语句的效率。例如     
    return String(s1 + s2);
这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如
String temp(s1 + s2);
return temp;
实质不然,上述代码将发生三件事。首先,temp 对象被创建,同时完成初始化;然后拷贝构造函数把 temp 拷贝到保存返回值的外部存储单元中;最后,temp 在函数结束时被销毁(调用析构函数) 。然而“创建一个临时对象并返回它”的过程是不同的,编译器直接把临时对象创建并初始化在外部存储单元中,省去了拷贝和析构的化费,提高了
效率。
类似地,我们不要将  
return int(x + y); // 创建一个临时变量并返回它
写成
int temp = x + y;
return temp;

由于内部数据类型如 int,float,double 的变量不存在构造函数与析构函数, 虽然该 “临时变量的语法”不会提高多少效率,但是程序更加简洁易读。

分享到:
评论

相关推荐

    Python语言基础:局部变量和全局变量.pptx

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。 对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用...

    c++作用域运算符用法(全局变量和局部变量)

    通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。作用域运算符 代码如下:#include<iostream>using namespace std;int num=10;int...

    Python基础——全局变量与局部变量

    局部变量2.全局变量 1.局部变量 在 def 中, 我们可以定义一个局部变量, 这个变量 a 只能在这个功能 fun 中有效, 出了这个功能, a 这个变量就不是那个局部的 a. def fun(): a = 10 print(a) return a+90 print(fun...

    C#:(变量)字段和局部变量的作用域冲突

    C#把声明为类型级的变量看作字段,而把在方法中声明的变量看作局部变量。 代码如下:using System; namespace ConsoleApplication10{class Program{static int j = 20; public static void Main(string[] args){int j...

    实验 10 函数理解函数和局部变量的概念

    (4) 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 二、实验内容和步骤 I.基础部分:理解函数和局部变量的概念 (1)给定程序 c10-1-1.c 的功能是:交换变量 m 和 n 的值。运行调试 c10-1-1.c,观察...

    C# 7.0之ref locals and returns(局部变量和引用返回)

    首先我们知道ref关键字是将值传递变为引用传递,那么我们先来看看ref locals(ref局部变量) 列子代码如下: static void Main(string[] args) { int x = 3; ref int x1 = ref x; //注意这里,我们通过ref关键字 把x...

    demo04_全局变量与局部变量.py

    作为一个零基础人员,也是天天在网上找资料,深知资料的重要,为此,贡献一些资料,希望各位能够更进一步

    python基础2day04.txt

    day03回顾 函数 def fn(): pass fn # 根据fn变量返回函数的引用关系 fn() # 返回调用函数后的引用关系 v1 = fn # v1 绑定 fn绑定的函数 ... 定义在函数内部的变量称为局部变量(函数的形参也是局部变量) 局部变

    单片机与DSP中的ADS下C语言中局部变量的存储位置分配

    按照一般教科书上的说法,C语言中的局部变量应该是分配在"栈"中的。而实际情况,有些出入录,肯能更容易理解。  这一段代码,唯一的用途,就是分配变量。int func1(void) { volatile int father; volatile ...

    C++——作用域运算符.txt

    存在全局变量a=33.3,main函数中存在局部变量a=2;输出结果为局部变量2; why? 原因:在main函数中局部变量将屏蔽全局变量。 若想输出全局变量,可以使用C++中的作用域运算符::,该运算符可以指定所需要的作用域...

    JavaScript私有变量实例详解

    总的来说,私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。 function add(num1, num2){ var sum = num1 + num2; return sum; } 上面的例子中的 num1, num2, sum 就是函数的私有变量。 如果在这个...

    php-exception-locals:局部变量支持 PHP 异常

    局部变量支持 PHP 异常 使用这个 PHP 扩展,异常堆栈跟踪的局部变量的内容被捕获并在getTrace()方法中公开。 安装 从源安装: phpize && ./configure && make && sudo make install 用法 首先,您只需要安装此...

    第十二天学Python:函数(3)变量作用域、匿名函数与递归函数

    经过昨天: 函数(2)变化参数....局部变量:局部变量在某个函数内部声明,只能在这个函数内部调用 >>> i = 5 >>> def n_n(num): num = num*num return num >>> n_n(i) 25 >>> print(num) NameError: name

    面向对象编程xmind思维导图,详细知识点

    类属性成员变量局部变量属性赋值的先后顺序成员变量和局部变量的异同点方法方法声明权限修饰符:public protected 缺省 private;返回值类型:没有返回值:采用void 关键字;具体的返回值类型:int、String、double等...

    Javascript中return的使用与闭包详解

    Javascript中闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。而return语句在js中起到举足轻重的作用,该关键字不仅具有返回函数值得功能,还具有一些...

    C语言程序设计标准教程

    在主函数中输入n值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量和实参变量的标识符都为n, 但这是两个不同的量,各自的作用域不同)。 在主函数中用printf 语句输出一次n值,这个n值是实参n的...

    Python基础,面向零基础小白新人

    For ,Try/Except, Print ,Input,缩进结构,语句断行,数字类型,字符串,运算符,变量,列表,索引,元组,字典,集合,函数,全局变量,局部变量,return,类与对象,标准库,Numpy,Pandas

    【04-面向对象(上)】

    •与成员变量不同的是除了形参外,其他局部变量都必须显式地初始化, •Java 里允许局部变量和成员变量重名。这样局部变量会覆盖成员变量,这时通过this 来调用实例的属性. 成员变量的初始化 •当类被加载时,...

    Python变量作用范围实例分析

    本文实例讲述了Python变量作用范围。分享给大家供大家参考。具体如下: #coding=utf-8 #变量作用范围 global z #使用全局变量 z=1 #给全局变量赋值 x=99 #x全局变量声明时初始化 def foo(y): #y和z在函数中被赋值:...

    day022-jdk8新特性和lambda表达式 代码和笔记.rar

    1. lambda: 1. 概念:就是对函数式接口匿名内部类的简写 2.... 3.... 函数式接口 变量名 = (参数1,参数2...) -> { ... 若是局部变量没有加final关键字,系统会自动添加,此后在修改该局部变量,会报错;

Global site tag (gtag.js) - Google Analytics