stock10.h
#ifndef STOCK10_H_
#define STOCK01_H_
#include<string>
class Stock
{
private:
std::string company;
long shares;
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 buy(long num,double price);
void sell(long num,double price);
void update(double price);
void show();
};
#endif
stock10.cpp
#include<iostream>
#include "stock10.h"
Stock::Stock()
{
std::cout<<"Default constructor called\n";
company="no name";
shares=0;
share_val=0.0;
total_val=0.0;
}
Stock::Stock(const std::string & co,long n,double pr)
{
std::cout<<"Constructor using "<<co<<" called\n";
company=co;
if (n<0)
{
std::cout<<"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()
{
std::cout<<"Bye,"<<company<<"!\n";
}
void Stock::buy(long num,double price)
{
if (num<0)
{
std::cout<<"Number of shares purchased can't be negative"
<<"Transaction is aborted.\n";
}
else
{
shares+=num;
share_val=price;
set_tot();
}
}
void Stock::sell(long num,double price)
{
using std::cout;
if (num<0)
{
cout<<"Number of shares sold can't be negative."
<<"Transaction is aborted.\n";
}
else if (num>shares)
{
cout<<"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();
}
void Stock::show()
{
using std::cout;
using std::ios_base;
ios_base::fmtflags orig=cout.setf(ios_base::fixed,ios_base::floatfield);
std::streamsize prec=cout.precision(3);
cout<<"Company:"<<company
<<"Shares:"<<shares<<'\n';
cout<<"Shares Price:$"<<share_val;
cout.precision(2);
cout<<" Total Worth:$"<<total_val<<'\n';
cout.setf(orig,ios_base::floatfield);
cout.precision(prec);
}
usestock1.cpp
#include<iostream>
#include"stock10.h"
int main()
{
{
using std::cout;
cout<<"Using constructors to create new objects\n";
Stock stock1("NanoSmart",12,20.0);
stock1.show();
Stock stock2=Stock("Boffo Objects",2,2.0);
stock2.show();
cout<<"Assigning stock1 to stock2:\n";
stock2=stock1;
cout<<"Listing stock1 and stock2:\n";
stock1.show();
stock2.show();
cout<<"Using a constructor to reset an object\n";
stock1=Stock("Nifty Foods",10,50.0);
cout<<"Revised stock:\n";
stock1.show();
cout<<"Done\n";
}
system("pause");
return 0;
}
posted on
浙公网安备 33010602011771号