定义类,类规范一般来说由两个部分组成:
- 类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述共有接口。
- 类方法定义: 描述如何实现类成员函数。
类声明提供了类的蓝图,而方法提供了细节
在库文件中定义类:
//ss.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 = 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();
};
#endif
使用类对象的程序都可以直接访问公有部分,但只能通过共有成员函数来访问对象的私有成员。
共有类成员是程序和对象的私有成员之间的桥梁,提供了对象与程序之间的接口。
关键字class标识类定义,类名称称为这个用户定义的类型的名称。
实现类成员函数:
- 定义类成员函数时,使用作用域解析运算符(::)来标识函数所属的类
- 类方法可以访问类的private组件
//file00.cpp
#include<iostream>
#include"ss.h"
void Stock::acquire(const std::string& co, long n, double pr)
{
company = co;
if (n < 0)
{
std::cout << "you don't have money!!!"
<< 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 << "Shares don't negative.\n";
}
else
{
shares += num;
share_val = price;
set_tot();
}
}
void Stock::sell(long num, double price)
{
using std::cout;
if (num < 0)
{
cout << "Num can't be negative."
<< "\n";
}
else if (num > shares)
{
cout << "you don't have enough money.";
}
else
{
shares -= num;
share_val = price;
set_tot();
}
}
void Stock::update(double price)
{
share_val = price;
set_tot();
}
void Stock::show()
{
std::cout << "Company: " << company << " shares: " << shares
<< " share price: " << share_val << " total Worth: "
<< total_val << std::endl;
}
使用类:
//file01.cpp
#include<iostream>
#include"ss.h"
int main()
{
Stock ls;
ls.acquire("love",892137,9.45);
ls.show();
ls.buy(236789, 9.32);
ls.show();
ls.sell(453654, 3.89);
ls.show();
return 0;
}