中和阗盛工程建设有限公司网站,素材免费下载素材库,做网站如何配置自己的电脑,国家中小企业公共服务平台文章目录 一、匿名对象引入二、匿名对象简介1、匿名对象概念2、匿名对象作用域 - 对象创建与销毁3、代码示例 - 创建并使用匿名对象 一、匿名对象引入 匿名对象引入 : 在上一篇博客 【C】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 ) 中 , 讲到了 如… 文章目录 一、匿名对象引入二、匿名对象简介1、匿名对象概念2、匿名对象作用域 - 对象创建与销毁3、代码示例 - 创建并使用匿名对象 一、匿名对象引入 匿名对象引入 : 在上一篇博客 【C】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 ) 中 , 讲到了 如果 类对象 作为函数的返回值 , 返回的是在 函数中 创建的 类实例对象 的 副本 , 其本质是一个匿名对象 ; 对象值作为函数返回值 : 函数直接返回类的实例对象 值 , 不是返回 指针 或 引用 ;
// 定义函数, 返回 Student 对象值作为返回值
Student fun()
{Student s1(18, 170);return s1;
}二、匿名对象简介 1、匿名对象概念 在 C 语言中 , 匿名对象 指的是 没有 显式指定名称 的 类 的 实例对象 ;
匿名对象 通常用于 临时计算 或 作为函数的 参数 / 返回值 传递 ; 匿名对象创建语法 :
类名(构造函数参数)下面的代码 , 就是创建 Student 类的 匿名对象 ;
Student(12, 170)2、匿名对象作用域 - 对象创建与销毁 匿名对象 的 作用域 仅限于 创建匿名对象 的 那一句代码 , 这句代码执行完毕后 , 匿名对象会自动销毁 , 下一行代码无法访问 上一行代码 创建的 匿名对象 ;
下面的代码中 , 创建了 Student 类型的 匿名对象 , 并调用了该对象的 printfInfo 成员方法 ; // 创建匿名对象, 并执行匿名对象函数Student(12, 170).printfInfo();匿名对象 通常只在创建它的语句中使用 , 并且在语句结束时会被销毁 ; 匿名对象 不适用于需要 在多个语句之间保持持久性的情况 ; 3、代码示例 - 创建并使用匿名对象 创建匿名对象核心代码 : 创建了 Student 类型的匿名对象后 , 调用该匿名对象的函数 ; 这句代码执行完毕后 , 匿名对象就无法访问了 , 因为匿名对象的作用域仅限于其所在的表达式中 ; // 创建匿名对象, 并执行匿名对象函数Student(12, 170).printfInfo();代码示例 :
#include iostream
using namespace std;class Student
{
public:// 带参构造函数Student(int age, int height){m_age age;m_height height;cout 调用带参数构造函数 endl;}// 打印学生信息void printfInfo(){cout 学生信息 : 年龄 m_age , 身高 m_height endl;}Student(const Student s){m_age s.m_age;m_height s.m_height;cout 调用拷贝构造函数 endl;}public:int m_age; // 年龄int m_height; // 身高
};int main()
{// 创建匿名对象, 并执行匿名对象函数Student(12, 170).printfInfo();// 控制台暂停 , 按任意键继续向后执行system(pause);return 0;
}执行结果 :
调用带参数构造函数
学生信息 : 年龄 12 , 身高 170
Press any key to continue . . .