stock类的改造
class stock
{
private:
std::string company;
long sharee;
double share_val;
double total_val;
void set_tot(){ total_val=shares*share_val;}
public:
stock();
stock(const std::string &co,long n=0,double pr=0.0)
~stock();
void acquire(const std::string &co,long n,double pr);
void buy(long sum,double price);
void sell(long sum,double price);
void update(double price);
void show();
}
部分成员函数的实现
stock::stock()
{
std::cout<<"default constructor called\n";
company="no name";
shares=0;
share_val=0.0;
total_val=0.0;
}
stock::stock (const string &co,long n,double pr)
{
std::cout<<"constructor using"<<co<<"called\n";
company=co;
if(n<0)
{
std::cerr<<"Number of shares can not be negative:"
<<company<<"shares set to be 0.\n"
shares=0;
}
else
shares=n;
share_val=pr;
set_tot();
}
stock::~stock()
{
std::cout<<"bye,"<<company<<"!\n"
}
stock类的使用:
stock stock1("nanosmart",12,20,0);//初始化1
stock stock2=stock("Boffo objects",2,2.0);//初始化2
初始化2这种初始化方法,cpp允许编译器采用两种方式来执行,一种是按照初始化1来执行,一种是创建一个临时对象用来存储stock然后将该临时对象的值复制到stock2中。
stock2=stock1;
我们可以将一个对象的值赋给同类型的另一个对象
stock1=stock("noco",10,50.0);
stock1对象已经存在,因此这条语句不是对stock1进行初始化,而是将新值赋给它。