c++——类构造函数、析构函数

一、类构造函数
类和对象介绍
1.类构造函数,专门用于构造新对象、将初值赋给新对象的数据成员
2-1隐式的调用

class Stock
{
	private:
		string company;//公司名称
		long shares;//股票数量
		double share_val;//股票价格
		double total_val;//股票总价
		void set_tot()
		{
			total_val=shares * share_val;
		}
	public:
		void acquire(const string & co,long n,double pr);//首次购买股票
		void buy(long num,double price);//购买
		void sell(long num,double price);//出售
		void update(long price);//更新股价
		void show();
		Stock ();//为Stock声明一个构造函数
};

Stock::Stock()
{
	company="NULL";
	shares=0;
	share_val=0.0;
	total_val=0.0;
}

....

int main()
{
	Stock giant;
	giant.show();
}

程序运行时会隐式的调用构造函数
运行结果:
在这里插入图片描述
2-2显式调用

using namespace std;

class Stock
{
	private:
		string company;//公司名称
		long shares;//股票数量
		double share_val;//股票价格
		double total_val;//股票总价
		void set_tot()
		{
			total_val=shares * share_val;
		}
	public:
		void acquire(const string & co,long n,double pr);//首次购买股票
		void buy(long num,double price);//购买
		void sell(long num,double price);//出售
		void update(long price);//更新股价
		void show();
		Stock (const string & co,long n,double pr);//为Stock声明一个构造函数
};

//定义一个构造函数
Stock::Stock(const string & co,long n,double pr)
{
	company=co;
	if(n<0)
	{
		cout<<"股票数量不能为负数           "<<company<<"股票持有数量是0"<<endl;
		shares=0;
	}
	else
		shares=n;
	share_val =pr;
	set_tot();//设置股票总价
}

...

int main()
{
	Stock giant=Stock("火神",0,0.0);
	giant.show();
}

运行结果:
在这里插入图片描述

二、析构函数
1.用构造函数创建对象后,程序负责跟踪对象,直到过期为止。对象过期时,程序会自动调用析构函数完成清理工作。如果构造函数用new来分配内存,则析构函数用delete来释放内存
2.析构函数声明:~Stock();
程序demon

#include<iostream>
#include<string>

using namespace std;

class Stock
{
	private:
		string company;//公司名称
		long shares;//股票数量
		double share_val;//股票价格
		double total_val;//股票总价
		void set_tot()
		{
			total_val=shares * share_val;
		}
	public:
		void acquire(const string & co,long n,double pr);//首次购买股票
		void buy(long num,double price);//购买
		void sell(long num,double price);//出售
		void update(long price);//更新股价
		void show();
		Stock (const string & co,long n,double pr);//为Stock声明一个构造函数
		~Stock();//析构函数
};

//定义一个构造函数
Stock::Stock(const string & co,long n,double pr)
{
	company=co;
	if(n<0)
	{
		cout<<"股票数量不能为负数           "<<company<<"股票持有数量是0"<<endl;
		shares=0;
	}
	else
		shares=n;
	share_val =pr;
	set_tot();//设置股票总价
}

//析构函数
Stock::~Stock()
{
	cout<<"\t调用析构函数"<<endl;
}

...

int main()
{
	Stock giant=Stock("火神",0,0.0);
	giant.show();
}

运行结果:
在这里插入图片描述
三、构造

#include<iostream>
#include<string>

using namespace std;

class Stock
{
	private:
		string company;//公司名称
		long shares;//股票数量
		double share_val;//股票价格
		double total_val;//股票总价
		void set_tot()
		{
			total_val=shares * share_val;
		}
	public:
		void acquire(const string & co,long n,double pr);//首次购买股票
		void buy(long num,double price);//购买
		void sell(long num,double price);//出售
		void update(long price);//更新股价
		void show();
		Stock(); //默认构造函数
		Stock (const string & co,long n,double pr);//为Stock声明一个构造函数
		~Stock();//析构函数
};

Stock::Stock()
{
	company="NULL";
	shares=0; 
	share_val=0.0;
	total_val=0.0;
}

//定义一个构造函数
Stock::Stock(const string & co,long n,double pr)
{
	company=co;
	if(n<0)
	{
		cout<<"股票数量不能为负数           "<<company<<"股票持有数量是0"<<endl;
		shares=0;
	}
	else
		shares=n;
	share_val =pr;
	set_tot();//设置股票总价
}

//析构函数
Stock::~Stock()
{
	cout<<"\t调用析构函数"<<endl;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值