2.8 类类型

本文介绍了C++中类的定义和使用,包括从操作开始设计类的思路,如何定义Sales_item类,类的数据成员,访问符号的作用,以及struct关键字的使用。类定义了对象的接口和实现,数据成员是对象的内容,访问符号控制成员的可访问性。通过类,可以创建新的数据类型,如Sales_item,并通过构造函数控制初始化。struct与class的主要区别在于默认访问级别。
摘要由CSDN通过智能技术生成

C++中,通过定义类来自定义数据类型。类定义了该类型的对象包含的数据和该类型的对象可以执行的操作。标准库类型string、istream和ostream都定义成类

1 从操作开始设计类

每个类都定义了一个接口(interface)和一个实现(implementation)。接口由使用该类的代码需要执行的操作组成。实现一般包括类所需要的数据。实现还包括定义该类需要的但又不供一般性使用的函数。

定义类是,通常先定义该类的接口,即该类所提供的的操作。通过这些操作,可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持该类的实现。

2 定义Sales_item类

很明显,我们能够定义一种包含这三个数据元素和所用到的操作的数据类型。定义这种数据类型的方法就是定义类。

class Sales_item{

public:

private:

std::string isbn;

unsigned units_sold;

double revenue;

};

类定义以关键字class开始,其后是该类的名字标识符。类体位于花括号里面。花括号后面必须要跟一个分号。

类可以为空。类体定义了组成该类型的数据和操作。这些操作和数据是类的一部分,也称为类的成员(member)。操作称为成员函数,而数据称为数据成员。

类可以包含0个到多个private或public访问标号。访问标号控制类的成员在类外部是否可访问。使用该类的代码可能只能访问public成员。

定义了类,也就定义了一种新的类型。类名就是该类型的名字。通过命名Sales_item类,表示Sales_item是一种新的类型,而且程序也可以定义该类型的变量。

每一个类都定义了它自己的作用域。也就是说,数据和操作的名字在类的内部必须唯一,但可以重新定义在类外的名字。

3 类的数据成员

定义类的数据成员和定义普通变量有些相似,我们同样是指定一种类型并给该成员一个名字

std::string isbn;

unsigned units_sold;

double revenue;

这个类含有三个数据成员:一个名为isbn的string类型成员,一个名为units_sold的unsigned类型成员,一个名为revenue的double类型成员。累的数据成员定义了该类类型对象的内容。当定义Sales_item类型的对象时,这些对象将包含一个string型变量,一个unsigned型变量和一个double型变量。

定义变量和定义数据成员存在非常重要的区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的名字和类型。类不是在类定义里定义数据成员时初始化数据成员,而是通过成构造函数的特殊成员函数控制初始化。

4 访问符号

访问符号负责控制使用该类的代码是否可以使用给定的成员。类的成员函数可以使用类的任何成员,而不管其访问级别。访问标号public,private可以多次出现在类定义中。给定的访问标号应用到下个访问标号出现为止。

类中public部分定义的成员在程序的任何部分都可以访问,一般把操作放在public部分,这样程序中的任何代码都可以执行这些操作。

不是类的组成部分的代码不能访问private成员。通过设定Sales_item的数据成员为private,可以保证对Sales_item对象进行操作的代码不能直接操纵其数据成员。就像程序不能访问类中的private成员。Sales_item类型的对象可以执行那些操作,但是不能直接修改这些数据。

5 使用struct关键字

C++支持另一个关键字struct,它可以定义类类型,struct关键词从c继承过来的

如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private:如果使用struct关键字,那么这些成员都是public。使用class还是struct关键字来定义类,仅仅影响磨人的初始访问级别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值