C++ 编译器 发现 使用 匿名对象 时 , 会根据 匿名对象 的用法 , 决定对 匿名对象的 处理 ;
匿名对象单独使用 : 如果只是单纯的使用 匿名对象 , 没有涉及到 将 匿名对象 赋值给其它变量..., 就会在表达式执行完毕后 , 销毁匿名对象 ;
使用匿名对象初始化变量 : 如果 创建 匿名对象 后 , 还使用 匿名对象 初始化 变量 , 此时 编译器 会将 匿名对象 转为 普通对象 , 不会销毁该匿名对象..., 并且立刻销毁该匿名对象 ;
一、将 " 匿名对象 " 初始化给变量
1、使用匿名对象进行初始化操作
" 匿名对象 " 的 作用域 仅限于其所在的 表达式 , 这句表达式 执行完毕后 , 匿名对象 自动销毁...s = Student(12, 170);
C++ 编译器识别到上述操作后 , 会将 匿名对象 转为 变量名为 s 的 实例对象 ;
此时 即使该语句 执行完毕 , 创建的 匿名对象 , 被转换为普通对象...不涉及 匿名对象 销毁操作 ;
另外一种就是将 匿名对象 赋值给 已存在的变量 , C++ 编译器会进行如下处理 :
首先 , 读取 匿名对象 的值 , 将值赋值给已存在的变量 ,
然后 , 销毁 匿名对象