C++ ——— 匿名对象

目录

匿名对象的语法

测试匿名对象的声明周期

匿名对象的使用场景


匿名对象的语法

代码演示:

复制代码
class A
{
public:
	// 构造
	A(int i)
		:_a(i)
	{}

private:
	int _a;
};

int main()
{
	// 有名对象
	A a1(1);

	// 匿名对象
	A(5);

	return 0;
}

有名对象的特点:

有名对象的声明周期在 main 函数的这个局部域中

匿名对象的特点:

匿名对象的声明周期就在定义的这一行


测试匿名对象的声明周期

代码演示:

复制代码
class A
{
public:
	// 构造
	A(int i)
		:_a(i)
	{
		cout << "A(int i)" << endl;
	}

	// 析构
	~A()
	{
		cout << "~A()" << endl;
	}

private:
	int _a;
};

int main()
{
	A a1(1);

	cout << "匿名对象声明周期开始" << endl;
	A(5);
	cout << "匿名对象声明周期结束" << endl;

	return 0;
}

在构造函数和析构函数中都显示打印出来了,方便查看各个实例对象的生命周期

代码验证:

第一个构造函数是 a1 调用的,而匿名对象的构造函数和析构函数是连续调用的,这就证明了匿名对象的生命周期只在那一行,最后程序结束时调用了 a1 的析构函数


匿名对象的使用场景

代码演示:

复制代码
class Solution
{
public:
	int Sum_Solution(int n)
	{
		int sum = 1;

		for (int i = 1; i <= n; i++)
		{
			sum = sum * i;
		}

		return sum;
	}

private:
};

这个类实现的功能是阶乘,那么只是想得到某个数的阶乘是多少,就能使用匿名对象来实现

代码演示:

复制代码
// 正常实例化对象后再调用函数
Solution sl;
cout << sl.Sum_Solution(5) << endl;

// 直接使用匿名对象调用函数
cout << Solution().Sum_Solution(5) << endl;

代码验证:

相关推荐
ozawacai4 分钟前
markdown学习笔记(个人向) Part.1
笔记·学习
山河木马7 分钟前
前端学C++可太简单了:双冒号 :: 操作符
前端·javascript·c++
吃货界的硬件攻城狮11 分钟前
【显示模块】嵌入式显示与触摸屏技术理论
stm32·单片机·嵌入式硬件·学习
乌萨奇也要立志学C++1 小时前
【C++详解】STL-list模拟实现(深度剖析list迭代器,类模板未实例化取嵌套类型问题)
c++·list
rui锐rui1 小时前
大数据学习6:Sqoop数据迁移工具
大数据·学习·sqoop
psybrain1 小时前
脑科学圈| 利用眼动追踪评估演讲情境下焦虑障碍儿童的注视行为
学习·心理学·脑科学·课堂·焦虑·儿童青少年·眼动
闻缺陷则喜何志丹1 小时前
【前缀和 BFS 并集查找】P3127 [USACO15OPEN] Trapped in the Haybales G|省选-
数据结构·c++·前缀和·宽度优先·洛谷·并集查找
序属秋秋秋3 小时前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
许白掰3 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
B1nna4 小时前
Docker学习
学习·docker·容器