对象和类

来源:互联网 发布:八零网络验证后台 编辑:程序博客网 时间:2024/06/05 21:12

与C语言相比,C++所做的最重要的改进就是提供了类。

编写一个类函数,我们将接口(类的定义)放在头文件中,并将实现(类方法的代码)放在源代码文件中。


//Stock类定义的头文件 stock class interface //stock.h #ifndef STOCK_H_#define STOCK_H_#include <string>class Stock{private://私有成员函数,private可以省略std::string company;//company namelong shares ;//股票数量double share_val;//股票单价double total_val;//股票总价void set_total(){total_val = shares * share_val;}public://公共函数,接口,函数说明Stock();//默认构造函数(default constructor)Stock(const std::string &co, long n,double pr);//构造函数~Stock();//析构函数(destructor)void buy(long num, double price);//买股票,应有数量和价钱void sell(long num, double price);//卖股票,dittovoid update(double price);//价钱更新void show();//显示当前的股票信息};#endif

如上述stock.h头文件代码中,定义了一个Stock类。private为类的私有成员,可以省略关键词private,因为这是类对象的默认访问控制;Public为共有成员函数,其中,public提供了一个程序和对象沟通的桥梁。一般将数据项放在私有部分,组成类接口的成员函数放在共有部分。析构函数的调用为系统自动调用,定义好就行。 下面为类实现的源函数

//类实现源函数 implementing the Stock class//stock.cpp#include <iostream>#include "stock.h"Stock::Stock()//default constructor{company = "Error";shares = 0;share_val = 0;total_val = 0;}Stock::Stock(const std::string &co, long n,double pr){company = co;if(n < 0)//如果股票数小于0{std::cout<< "Numbers of shares can't be negative"     << company << "shares set to 0.\n";shares = 0;//就把股票数置为0}else shares = n;share_val = pr;set_total();}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_total();}}void Stock::sell(long num, double price){if(num < 0){std::cout << "Number of shares sold can't be negative."  << "Transaction is aborted.\n";}else if(num > shares){std::cout << "You can't sell more than you have."      << "Transaction is aborted.\n";}else{shares -= num;share_val = price;set_total();}}void Stock::update(double price){share_val = price;set_total();}void Stock::show(){std::cout << "    company: " << company << std::endl      << "     Shares: "  << shares  << '\n'  << "Share Price: $" << share_val << std::endl  << "Total Price: $" << total_val << std::endl;}
编写类实现的方法,直接考虑每个实现的功能,而不用考虑过程,这是面向对象编程的优点。

//测试 构建的Stock类是否可以用//main.cpp#include <iostream>#include "stock.h"int main(){using namespace std;Stock eric("JLU",1000,3.14);  //创建一个对象Ericeric.show();cout<< "Buy 500 JLU Stock\n";eric.buy(500,10);eric.show();cout<< "sell 1000 JLU Stock\n";eric.sell(1000,20);eric.show();cin.get();return 0;}





原创粉丝点击