一、类构造函数
类和对象介绍
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;
}