【C++】4-1.4 c++匿名对象

2023-01-10 15:15:35

【C++】4-1.4 c++匿名对象

匿名对象

所谓的匿名对象就是没有名字的对象,下面举例说明:

假如Fruit是一个声明的class;
Fruit apple;//这个apple就是对象,对象名字就是apple;
Fruit();这个也是一个对象,但是没有名字,即匿名对象;

匿名对象使用完后会自动调用析构函数释放空间。

使用示例

#include<iostream>

// 定义一个银行账户的class
class Account
{	
private:
	double sum = 0;  //类数据成员,表示钱数;私有成员,外部无法访问;*/
public:

	double copy_sum = sum;  //类数据成员,表示钱数;公有成员,外部可以访问;
	

	// 无参构造函数
	Account()
	{
		sum = 0;
	}

	// 有参构造函数
	Account(double balance_)
	{
		sum = balance_; //或者	this->balance = balance;//修改 balance成员变量
		copy_sum = sum;
	}
	
	// 存钱的函数
	void SaveMoney(double x)
	{
		sum += x;
		copy_sum = sum;
	}
	// 取钱,账户不可以透支
	double Withdraw(double y)
	{
		// 自动推断数据类型,并使用列表初始化的方法初始化temp;
		auto temp{ 0.0 };
		if (sum < y)			
		{
			temp = sum;
			sum = 0;
			copy_sum = sum;
			return temp;
		}
		else
		{
			sum -= y;
			copy_sum = sum;
			return y;
		}
	}
};

int main()
{	
	Account jn10010537_1; //定义一个对象jn10010537_1,使用无参构造函数初始化创建对象;
	Account jn10010537_2= Account(1000);//使用Account(1000)构造一个匿名对象,并赋值给jn10010537_2对象;

	//取钱
	std::cout << "[0] jn10010537_1取钱:"<< jn10010537_1.Withdraw(100) << std::endl;
	std::cout << "[1] jn10010537_2取钱:" << jn10010537_2.Withdraw(100) << std::endl;

	// jn10010537_1对象,存钱120,再取20;然后查看还剩多少钱;
	jn10010537_1.SaveMoney(120);
	std::cout << "[2] jn10010537_1取钱:" << jn10010537_1.Withdraw(20) << std::endl;
	std::cout << "[3] jn10010537_1还剩:" << jn10010537_1.copy_sum << std::endl;	   

	// 创建一个匿名对象
	// 先存500,再取300;
	std::cout <<"[4] 匿名对象先存500,再取钱:"<< Account(500).Withdraw(300) << std::endl;
	return 0;

}

运行如下:
在这里插入图片描述

  • 作者:jn10010537
  • 原文链接:https://jn10010537.blog.csdn.net/article/details/115639640
    更新时间:2023-01-10 15:15:35