⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stock2.cpp

📁 我学习C++ Primer Plus过程中写下的课后作业的编程代码
💻 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 + -