//stock00.h -- Stock class interface
//version 00
#ifndef STOCK00_H_
#define STOCK00_H_
#include <string>
class Stock // class关键字 + 类型名
{
private: // 关键字,私有部分
std::string company;
long shares;//股票数量
double share_val;//每股价格
double total_val;//股票总价格
void set_tot() { total_val = shares * share_val; } // 就地定义的话,为内联函数
public: // 关键字,公有部分
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();
}; // note semicolon at the end
#endif
关键字:
class:C++ 关键字 class 指出这些代码定义了一个类设计。
private:私有部分,该关键字可以省略
public:公有部分
使用类对象的程序都可以直接访问公有部分,但只能通过公有成员函数(或友元函数)来访问对象的私有成员。公有成员函数提供了对象和程序之间的接口。类设计尽可能将公有接口和实现细节分开。数据项通常放在私有部分,组成类接口的成员函数放在公有部分。
数据成员和成员函数都可以在类的公有部分和私有部分申请。
在类设计中已经给出了成员函数的函数头,但是没有给出成员函数的具体部分,所以在外部设计成员函数的详细部分的时候,应当使用作用域运算符“::“来指出所属的类,如:
void Stock :: update(double price)
这样的好处在于,任然可以使用update这个函数名来做其他类的成员函数,如:
void Buffoon :: update()
//stock00.cpp -- implementing the Stock class
//version 00
#include<iostream>
#include "stock00.h"
void Stock :: acquire(const std::string & co, long n, double pr)
{
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();
}
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();
}
}
内联函数:
定义在类声明中的函数为内联函数,但是使用inline限定符也可以使定义在类声明之外的函数成为内联函数:
class Stock
{
private:
...
void set_tot();
public:
...
};
inline void Stock::set_tot()
{
total_val = shares * share_val;
}
为了确保内联函数对多文件程序中的所有文件都可用的最简便的方法是:将内敛函数放在定义类的头文件中。
方法使用哪个对象:
首先是创建对象(kate和joe两个对象):
Stock kate, joe;
使用对象的成员函数:
kate.show();
joe.show();
使用类
比如现在写了一个程序,文件名为usestock0.cpp,他调用了stock00.cpp中的类,那么只需要将usestock0.cpp和stock00.cpp一起编译,并将stock00.h放在当前文件夹中。