• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++临时性对象的生命周期详细解析

C++临时性对象的生命周期详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++面向对象,c++面向对象编程题,c++面向对象教程,c++面向对象程序设计,c++类与对象等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
有关临时对象的生命周期有三种情况:

1)一般情况:
临时性对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。该完整表达式造成临时对象的产生。

实例代码如下:

2)凡含有表达式执行结果的临时性对象,应该存留到object的初始化操作完成为止。
示例代码如下:

class A
{
public:
    A(int i = 0): m_i(i)
    {
        cout << "A(): " << m_i << endl;
    }

    ~A()
    {
        cout << "~A(): " << m_i << endl;
    }

    A operator+(const A& rhs)
    {
        cout << "A operator+(const A& rhs)" << endl;
        return A(m_i + rhs.m_i);
    }

    A& operator=(const A& rhs)
    {
        cout << "A& operator=(const A& rhs)" << endl;
        m_i += rhs.m_i;
        return *this;
    }

    int m_i;
};

int main()
{
    A a1(1), a2(2);
    A a3;
    a3 = a1 + a2; //a1 + a2产生的临时变量在a3的赋值操作完成后,才释放
    return 0;
}
</div>
运行结果为:




3)如果一个临时性对象被绑定于一个reference,对象将残留,直到被初始化之reference的生命结束,或直到临时对象的生命范畴(scope)结束——视哪一种情况先到达而定。

示例代码如下:
</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++对象的浅复制和深复制详解及简单实例
  • 用C++面向对象的方式动态加载so的方法
  • C++对象内存分布详解(包括字节对齐和虚函数表)
  • 如何应用C++的函数对象
  • 剖析C++的面向对象编程思想
  • C++内核对象封装单实例启动程序的类
  • C++中的常对象与常对象成员详解
  • C++对象的动态建立与释放详解
  • C++临时性对象的生命周期详细解析
  • 深入c++中临时对象的析构时机的详解

相关文章

  • 2017-05-28浅谈C++ Explicit Constructors(显式构造函数)
  • 2017-05-28C语言实现计算树的深度的方法
  • 2017-05-28C++基础学生管理系统
  • 2017-05-28C/C++实现贪吃蛇逐步运动效果
  • 2017-05-28通过一个小例子来简单理解C语言中的内存空间管理
  • 2017-05-28C++中的异或运算符^的使用方法
  • 2017-05-28详解C++编程中类模板的相关使用知识
  • 2017-05-28如何编译libfreetype方法详解
  • 2017-05-28C 语言常用方法技巧
  • 2017-05-28VC++实现文件与应用程序关联的方法(注册表修改)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入理解C++的多态性
    • C++非递归队列实现二叉树的广度优先遍历
    • C++指向类成员函数的指针详细解析
    • C++动态内存分配(new/new[]和delete/delete[])详解
    • C++用mysql自带的头文件连接数据库
    • 从汇编看c++中extern关键字的使用
    • 基于C语言中段错误的问题详解
    • 基于C++实现的各种内部排序算法汇总
    • c++几种基本的插入排序(图文)
    • C++中Semaphore内核对象用法实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有