上传新文件

上级 ee76af21
//1.成员函数说明
/*
* acquire()函数管理对某个公司股票的首次购买,
而 buy( )和 sell()管理增加或减少持有的股票。
方法buy( )和 sell()确保买入或卖出的股数不为负。
另外,如果用户试图卖出超过他持有的股票数量,
则 sell()函数将结束这次交易。
这种使数据私有并限于对公有函数访问的技术允许我们能够控制数据如何被使用;
在这个例子中,它允许我们加入这些安全防护措施,避免不适当的交易。
4个成员函数设置或重新设置了total_val成员值。
这个类并非将计算代码编写4次,而是让每个函数都调用set_tot()函数。
由于set_tot()只是实现代码的一种方式,而不是公有接口的组成部分,
因此这个类将其声明为私有成员函数(即编写这个类的人可以使用它,但编写代码来使用这个类的人不能使用)。
如果计算代码很长,则这种方法还可以省去许多输入代码的工作,并可节省空间。
然而,这种方法的主要价值在于,通过使用函数调用,而不是每次重新输入计算代码,
*/
//2.内联方法
//其定义位于类声明中的函数都将自动成为内联函数,
//因此Stock:set_tot( )是一个内联函数。
//类声明常将短小的成员函数作为内联函数,set_tot()符合这样的要求。
//也可以在类声明之外定义成员函数,并使其成为内联函数。
//为此,只需在类实现部分中定义函数时使用inline限定符即可:
//例子如下所示:
class Stock //class declaration
{
private:
void set_tot(); //definition kept separate
public:
};
inline void Stock::set_tot() //use inline in definition
{
total_val = shares * share_val;
}
//内联函数的特殊规则:
/*
* 内联函数的特殊规则要求在每个使用它们的文件中都对其进行定义。
确保内联定义对多文件程序中的所有文件都可用的、
最简便的方法是:将内联定义放在定义类的头文件中
(有些开发系统包含智能链接程序,允许将内联定义放在一个独立的实现文件)。
*/
//3.方法使用哪个对象
//下面介绍使用对象时最重要的一个方面:如何将类方法应用于对象。
//下面的代码使用了一个对象的shares 成员:
shares += num;
//创建类变量
Stock kate, joe;
//通过成员运算符使用对象的成员函数
kate.show(); //the kate object calls the member function
joe.show(); //the joe object calls the member function
/*
* 所创建的每个新对象都有自己的存储空间,
用于存储其内部变量和类成员;
但同一个类的所有对象共享同一组类方法,即每种方法只有一个副本。
例如,假设kate和 joe 都是Stock 对象,
则kate.shares将占据一个内存块,而joe.shares占用另一个内存块,
但 kate.show()和joe.show()都调用同一个方法,
也就是说,它们将执行同一个代码块,只是将这些代码用于不同的数据。
在面向对象(OOP)中,调用成员函数被称为发送消息,
因此将同样的消息发送给两个不同的对象
*/
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册