IDE Qt Creator 4.0.3
stock.h

#ifndef STOCK_H
#define STOCK_H#include <string>class Stock  //类声明
{
private:std::string company;long shares;  //double share_val;double total_val;void set_tot(){total_val=share_val*shares;}
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 num,double price);  //买入股票void sell(long num,double price);  //卖出股票void update(double price);  //更新股票价格void show();  //显示关于所持股票的信息
};#endif // STOCK_H

main.cpp

#include <iostream>
#include "stock.h"using namespace std;
//默认构造函数
Stock::Stock()
{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)
{cout<<"Construcor using"<<co<<" called\n";company=co;if(n<0){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()
{cout<<"bye,"<<company<<endl;
}
//对某个公司股票的首次购买
void Stock::acquire(const string &co, long n, double pr)
{company=co;if(n<0){cout<<"Number of shares can't be negative;"<<company<<"shares set to 0.\n";}else{shares=n;}share_val=pr;set_tot();
}
//购买股票
void Stock::buy(long num, double price)
{if(num<0){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)
{if(num<0){cout<<"Number of shares sold cna'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()
{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(3);cout<<" Total Worth:$"<<total_val<<'\n';//show()应重置格式信息,使其恢复到自己被调用前的状态cout.setf(orig,ios_base::floatfield);cout.precision(prec);
}
int main(int argc, char *argv[])
{{cout<<"Using constructos 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;stock1.show();stock2.show();cout<<"Using a constructor to reset an object\n";stock1=Stock("Nifty Foods",10,50.0);  //临时对象stock1.show();cout<<"Done\n";}return 0;
}

运行结果如下

转载于:https://www.cnblogs.com/Manual-Linux/p/9733305.html

P359 usestock2.cpp相关推荐

  1. C++笔记 对象的创建与消亡

    经过 C++ Primer Plus 上的实验发现:对象操作是一个栈的机制. 先被创建的对象,后被释放,而对一个已经具体化的对象进行的任何改变,都会导致旧对象的消亡. 执行的顺序是先构造,再复制,最后 ...

  2. C++ .h(头文件) 与 .cpp(源文件) 的使用

    .h 文件: .h是头文件 ,里面主要是写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等, 注意.h文件写的时候有特定的格式就是开头和结尾 #ifndef TEST_HEAD ...

  3. 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。

    CvvImage.h代码: #pragma once #ifndef CVVIMAGE_CLASS_DEF #define CVVIMAGE_CLASS_DEF #include "open ...

  4. UTF-8 CPP的使用

    UTF-8 CPP是一个简单.小巧.轻量级.跨平台的UTF-8编码字符串库. 下面对其使用方法进行简单的介绍: 1.      从http://sourceforge.net/projects/utf ...

  5. 拇指接龙游戏升级记录03(升级MainScene.cpp)

    MainScene是拇指接龙游戏的主游戏场景文件,拥有近5000行代码. 说实在的,实现自cocos2d-x 2.x版本向当下最新的3.8.1版本的升级过程,其中涉及的技术不是一下能够说明的.有些是形 ...

  6. GATB的使用小例子test.cpp

    1.touch test.cpp,,文件夹中 出现test.cpp touch test.cpp 2. test.cpp的内容 #include <gatb/gatb_core.hpp>i ...

  7. Linux下运行.cpp文件

    如何在Ubuntu16下运行一个简单的.cpp文件呢,做法如下: 假设我在桌面上写了一个hell,world程序; 保存为abc.cpp 然后在终端打开: 1.点击保存的文件的属性,看在哪里,我的是在 ...

  8. 2020-10-26runtime error: member access within null pointer of type ‘struct ListNode‘ (solution.cpp)错

    runtime error: member access within null pointer of type 'struct ListNode' (solution.cpp)错误 /*** Def ...

  9. matlab怎么跑.cpp程序,MATLAB编译cpp文件

    目的:打通MATLAB与VC之间的通道,实现用MATLAB调用VC程序,以及VC调用MATLAB程序. 上篇博客实现了将MATLAB的M文件编译成C/C++文件,exe应用程序.这篇实现MATLAB编 ...

最新文章

  1. SAP产品的Field Extensibility
  2. 跟我一起做一个vue的小项目(十一)
  3. 计算机应用12班,计算机应用二班xx毕业论文.doc
  4. 【Qt】2D绘图之填充规则
  5. centos 7 mysql随机密码_在centos中安装了mysql5.7之后解决不知道随机的密码的问题...
  6. MSSQL如何在没有主键的表中删除重复数据
  7. 全网最细之instanceof和类型转换
  8. 实践解读丨Python 面向对象三大特征之多态
  9. 【java】Thread.Sleep 与 Thread.onSpinWait
  10. css学习_css书写规范
  11. string.Format字符串格式化说明
  12. 2021奥维地图不能用了,有没有其他地图软件能替代?
  13. 《遥感基础导论》知识图——第五章 微波遥感数据
  14. c 语言入门自学app,C语言入门学习软件
  15. mysql创建制度账户_Mysql数据库用户管理
  16. Java-ForkJoinPool详解
  17. 程序员如何掌握计算机英语(转)
  18. iOS设备录制屏幕视频
  19. nonnegative matrix factorization (NMF)的R实现
  20. IM是做什么?可以用来实现哪些功能?

热门文章

  1. [Vue源码分析] 模板的编译
  2. Python序列化的使用(有少量修改)
  3. KVO-基本使用方法-底层原理探究-自定义KVO-对容器类的监听
  4. 自定义sort函数第三个参数的规则
  5. NIST发布企业移动应用安全建议参考指南
  6. 重构机房收费系统总结1之配置文件+反射+抽象工厂
  7. IOS-网络(GCD)
  8. mac linux netstat -n
  9. FTP服务器配置与管理(4) 服务器端的常用配置及FTP命令
  10. Linux用系统命令杀死僵尸进程