匿名对象
所谓的匿名对象就是没有名字的对象,下面举例说明:
假如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;
}
运行如下: