📄 stock2.cpp
字号:
// stock2.cpp -- improved version
#include <iostream>
#include "stock2.h"
// constructors
Stock::Stock()
{
company = new char[8];
strcpy(company,"no name");
shares = 0;
share_val = 0.0;
total_val = 0.0;
}
Stock::Stock(const char * co, int n, double pr)
{
int len = strlen(co);
company = new char[len+1];
strcpy(company, co);
if(n<0)
{
std::cerr<<"Number of shares can't be negative."
<<company<<" shares set to 0.\n";
shares = 0;
}
else
shares = n;
share_val = pr;
set_tot();
}
Stock::Stock( const Stock & s) // copy constructor
{
int len = strlen(s.company);
company = new char[len+1];
strcpy(company,s.company);
shares = s.shares;
share_val = s.share_val;
set_tot();
}
Stock & Stock::operator = (const Stock & s) // overload operator =
{
if(this == &s)
return *this;
delete []company;
int len = strlen(s.company);
company = new char[len+1];
strcpy(company,s.company);
shares = s.shares;
share_val = s.share_val;
set_tot();
return *this;
}
// class destructor
Stock::~Stock()
{
delete []company;
}
// other methods
void Stock::buy(int num, double price)
{
if(num < 0)
{
std::cerr <<"Number of shares purchased can't be negative."
<<"Transaction is aborted.\n";
}
else
{
shares += num;
share_val = price;
set_tot();
}
}
void Stock::sell(int num, double price)
{
using std::cerr;
if (num < 0)
{
cerr<<"Number of shares sold can't be negative."
<<"Transaction is aborted.\n";
}
else if (num > shares)
{
cerr<<"You can't sell more than you have!"
<<"Transaction is aborted.\n";
}
else
{
shares -= num;
share_val = price;
set_tot();
}
}
void Stock::update(double price)
{
share_val = price;
set_tot();
}
const Stock & Stock::topval(const Stock & s)const
{
if (s.total_val > total_val)
return s;
else
return *this;
}
std::ostream & operator<< (std::ostream & os, const Stock & s)
{
os<<"Company: "<<s.company
<<" Shares: "<<s.shares<<std::endl
<<" Share Price: $: "<<s.share_val
<<" Total Worth: $: "<<s.total_val<<std::endl;
return os;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -