目录
请大家回顾第一讲:
【C++】抽象和类(1)--OOP编程特性、类规范基本组成、接口是什么、类与结构的区别
1 实现类成员函数
成员函数的定义有两个特殊的特征
- 定义成员函数时,使用作用域解析运算符(::)标识所属的类
- 类方法可以访问类的private组件
不同类下面的成员函数名字可以一样!
void Stock:: update (double price)
void Buffoon:: update()
作用域解析运算符确定了方法定义对应的类的身份
Stock中的其他函数不必使用::就可以使用update(),因为他们是一个类里,是可见的
类方法的完整 名称包括类名
Stock::update()是函数的限定名
update() 是全名的缩写
类方法可以直接 访问私有成员!!!
void Stock::show()
{
std::cout << "Company: " << company
<< " Shares: " << shares << "\n"
<< " Share Price: $ " << share_val
<< "Total Worth: $" << total_val << "\n";
}
2 代码示例
stock00.h
// stock00.h -- Stock class interface
// 版本 00 类的声明
#ifndef STOCK00_H_
#define STOCK00_H_
#include<string>
class Stock
{
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();
private:
std::string company;
long shares; //股票数量
double share_val; // 每股的价格
double total_val; //股票的总价格
void set_tot()
{
total_val = shares*share_val;
}
};
#endif
stock00.cpp
// stock00.cpp -- 对类stock00.h进行函数描述
// 版本还是00
#include<iostream>
#include"stock00.h"
void Stock::acquire(const std::string & co, long n, double pr)
{
company = co;
if (n < 0)
{
std::cout << "股票数量不能设置为0; "
<< 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 << "股票购买数量不能是负数。" << "交易被终止了!!\n";
}
else
{
shares += num;
share_val = price;
set_tot();
}
}
void Stock::sell(long num, double price)
{
using std::cout;
if (num < 0)
{
cout << "股票不能卖负数,你脑筋有问题?" << "中断交易了";
}
else if (num>shares)
{
cout << "你自己有几个股票不清楚吗?你能卖比自己持有还多的股票吗?!" << "交易终止!!!";
}
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 << "\n"
<< " Share Price: $ " << share_val
<< "Total Worth: $" << total_val << "\n";
}
3. 代码解析
3.1 成员函数说明

3.2 内联方法
定义位于类声明中的函数都将自动成为内联函数,Stock::set_tot是一个内联函数。
类声明常将短小的成员函数作为内联函数。
如果愿意,可以在类声明外定义成员函数,成为内联函数。需要使用inline
class Stock
{
private:
...
void set_tot(); //类声明外面定义成员函数
public:
...
};
inline void Stock::set_tot() //使用内联函数
{
total_val = shares * share_val;
}

3.3 方法使用哪个对象?



5999

被折叠的 条评论
为什么被折叠?



