c++临时变量

C++临时变量

“有时候,在求表达式的期间,编译器必须创建临时变量(temporary object)。像其它任何对象一样,它们需要存储空间,并且必须能够构造和销毁。需要注意的是,编译器创建的这个临时变量为常量.” – Thinking in C++

什么情况下编译器会创建临时变量

看下面代码:

class A{
public:
  print(){
    cout<<"hello world"<<endl;
  }
}
A generateA(){
  A a = A();
  return a;
}

int main(){
  A a = generateA();
  generateA();
}

A a = generateA()时,编译器不会创建临时变量,因为在generateA()返回之前,就已经把函数里面的a对象拷贝给了main函数中的a对象。

generateA()这句会使编译器创建一个临时对象,因为generateA()是有返回值的,但是在main函数中并没有对象来收留它,所以编译器会创建一个临时对象来收留它,为可能的后续操作做准备。例如:generateA().print()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

C++中的链式操作

链式操作是利用运算符进行的连续运算(操作),它的特点是在一条语句中出现两个或者两个以上相同的操作符,如连续的赋值操作、连续的输入操作、连续的输出操作、连续的相加...

1031
来自专栏梧雨北辰的开发录

Swift学习:构造器(上)

Swift赋予自定义类型更加丰富的功能,一个显著地方就是构造过程。Swift可以为自定义类型设置构造器来初始化一个实例。有关Swift构造器的使用特点可以总结...

2567
来自专栏思考的代码世界

Python基础学习08天

1344
来自专栏swag code

Java中的private、protected、public和default的区别(详解)

(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口...

513
来自专栏青枫的专栏

c语言基础学习08_关于内存管理的复习

============================================================================= 对于...

471
来自专栏debugeeker的专栏

《coredump问题原理探究》Linux x86版6.4节虚函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

371
来自专栏Golang语言社区

转-Go语言开发常见陷阱,你遇到过几个?

Go作为一种简便灵巧的语言,深受开发者的喜爱。但对于初学者来说,要想轻松驾驭它,还得做好细节学习工作。 初学者应该注意的地方: 大括号不能独立成行。 未使用变量...

3329
来自专栏C/C++基础

C++inline函数简介

inline函数是由inline关键字来定义,引入inline函数的主要原因是用它替代C中复杂易错不易维护的宏函数。

802
来自专栏梧雨北辰的开发录

Swift学习:属性

本篇将详细总结介绍Swift属性的用法; 属性是与特定的Swift类、结构体、枚举相关联的值;与其他语言相比,属性不再是被类所特有。

732
来自专栏java学习

Java每日一练(2017/7/24)

本期题目: (单选题) 1、与InputStream流相对应的Java系统的“标准输入对象”是() A System.in B System.out C Sy...

3418

扫码关注云+社区