c++学习笔记

本文详细介绍了C++中的类,包括类的定义、数据和操作的封装,以及接口的概念。重点讲解了类声明的结构,私有和公共部分的作用,以及如何通过作用域解析运算符实现类方法。此外,还提及了客户/服务器模型在类设计中的应用,强调了数据隐藏和封装的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中的类

类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。
以一个股票的类为例。
将某人当前持有的某种股票作为一个基本单元,数据表示中包含他持有的股票数量。可以将可执行的操作限制为:

  • 获得股票;
  • 增持;
  • 卖出股票;
  • 更新股票价格;
  • 显示关于所持股票的信息;

存储以下信息:

  • 公司名称;

  • 所持股票的数量;

  • 每股的价格;

  • 股票总值
    一般来说,类规范由两个部分组成。

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

  • 类方法定义:描述如何实现类成员函数。
    简单来说,类声明提供类的蓝图,方法定义提供了细节。

接口

接口是一个共享框架,供两个系统(用户或计算机程序之间)交互时使用;例如,移动鼠标时,计算机移动屏幕上的光标。程序接口将自己的意图转换为存储在计算机中的具体信息。
对于类,也就是公共接口。在这里公众是使用类的程序,,交互系统由类对象组成,接口由编写类的人提供的方法组成。接口让程序员能够编写与类对象交互的代码,从而让程序能够使用类对象。比如,size()方法是用户和string类对象直接的公共接口的组成部分。
要使用某个类,必须了解其公共接口;要编写类,必须创建其公共接口。

实现类成员函数

成员函数有两个特殊的特征:

  • 定义成员函数时,使用作用域解析运算符(::)来表示函数所属的类;
  • 类方法可以访问类的private组件;
    比如在Stock里面定义成员函数update()的函数头如下:
void Stock::update(double price)

作用域解析运算符确定了方法定义对应的类的身份。

使用类

知道如何定义类及其方法后,来创建一个程序,它创建并使用类对象。C++的目标是使得使用类与使用基本的内置类型尽可能相同。要创建类对象,可以声明类变量,也可以使用new为类对象分配存储空间。可以将对象作为函数的参数和返回值,也可以将一个对象赋给另一个对象。


客户/服务器模型

OOP程序员常依照客户/服务器模型来讨论程序设计。在这个概念中,客户是使用类的程序。类声明(包括类方法)构成了服务器,它是程序可以使用的资源。客户只能通过以共有方式定义的接口使用服务器,这意味着客户(程序员)唯一的责任是了解该接口。服务器(服务器设计人员)的责任是确保服务器根据该接口可靠并准确地执行。服务器设计人员只能去修改类设计的实现细节,而不能修改接口。这样程序员独立地对客户-服务器进行改进,对服务器的修改不会对客户的行为造成意外的影响。


总而言之,指定类设计的第一步是提供类声明。类声明类似结构声明,可以包括数据成员和函数成员。声明有私有部分,在其中声明的成员只能通过成员函数进行访问;声明还具有共有部分,在其中声明的成员可被使用类对象的程序直接访问。通常,数据成员被放在私有部分中,成员函数被放在共有部分中,因此典型的类声明的格式如下:

class className
{
private:
	data member declarations
public:
	member function prototypes
};

共有部分的内容构成了设计的抽象部分–公有接口。将数据封装到私有部分中可以保护数据的完整性,这被称为数据隐藏。因此,C++通过类是的实现抽象、数据隐藏和封装等OOP特性很容易。
指定类设计的第二部是实现类成员函数。可以在类声明中提供完整的函数定义,而不是函数原型,但是通常的做法是单独提供函数定义(除非函数很小)。在这种情况下,需要使用作用域解析运算符来指出成员函数属于哪个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值