C++ primer 十二 C++中的类(一)

来源:互联网 发布:淘宝手机号解除绑定 编辑:程序博客网 时间:2024/05/17 22:55

        类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。

一般来说,类规范由两个部分组成。

•类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。

• 类方法定义:描述如何实现类成员函数。

简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。

        看下面的代码:

stock00.h文件:

#ifndef STOCK00_H_

#define STOCK00_H_

#include<string>

class Stock//class declaration

{

private:

std::string company;

long shares;

double share_val;

double total_val;

void set_tot()

{

total_val=share_val*shares;

}

public:

void acquire(const std::string &co,long n=0,double pr=0);

void buy(long num,double price);

void sell(long num,double price);

void update(double price);

void show();

};

#endif

       首先,C++关键字class指出这些代码定义了一个类设计(不同于在模板参数中,在这里,关键字class和typename不是同义词,不能使用typename 代替class)。这种语法指出,Stock是这个新类的类型名。该声明让我们能够声明Stock类型的变量—— 称为对象或实例,每个对象都表示一支股票。例如,下面的声明创建两个Stock对象,它们分别名为sally 和 solly:

Stock sally;

Stock solly;

       接下来,要存储的数据以类数据成员(如company和shares)的形式出现。例如,sally的company 成员存储了公司名称,share成员存储了Sally持有的股票数量,share_val成员存储了每股的价格, totai_val成员存储了股票总价格。同样,要执行的操作以类函数成员(方法,如sen()和update。)的形式出现。成员函数可以就地定义(如Set_tot()),也可以用原型表示(如其他成员函数)。其他成员函数的完整定义稍后将介绍,它们包含在实现文件中;但对于描述函数接口而言,原型足够了。将数据和方法组合成一个单元是类最吸引人的特性,有了这种设计,创建Stock对象时,将自动制定使用对象的规则。

访问控制

关键字private和public描述了对类成员的访问控制。使用类对象的程序都可以直接访问公有部分,但只能通过公有成员函数(或友元函数〉来访问对象的私有成员。例如,要修改Stock类的shares成员,只能通过Stock的成员函数。因此,公有成员函数是程序和对象的私有成员之间的桥梁,提供了对象和程序之间的接口。防止程序直接访问数据被称为数据隐藏。

        类设计尽可能将公有接口与实现细节分开。公有接口表示设计的抽象组件。将实现细节放在一起并将它们与抽象分开被称为封装。数据隐藏(将数据放在类的私有部分中)是一种封装,将实现的细节隐藏在私有部分中,就像Stock类对set_tot( )所做的那样,也是一种封装。封装的另一个例子是,将类函数定义和类声明放在不同的文件中。

控制对成员的访问:公有还是私有

        无论类成员是数据成员还是成员函数,都可以在类的公有部分或私有部分中声明它。但由于隐藏数据是OOP主要的目标之一,因此数据项通常放在私有部分,组成类接口的成员函数放在公有部分;否则,就无法从程序中调用这些函数。正如Stock声明所表明的,也可以把成员函数放在私有部分中。不能直接从程序中调用这种函数,但公有方法却可以使用它们。通常,程序员使用私有成员函数来处理不属于公有接口的实现细节。
不必在类声明中使用关键字private,因为这是类对象的默认办问控制:
class World
{
float mass;

char name[30];

public:

void tellall(void);

...

};

0 0
原创粉丝点击