C++PrimerPlus 学习笔记 | 第十章 类和对象|2.3.实现类的成员函数 & 2.4.使用类 2.5.小结

实现类的成员函数

实现类的第二个步骤就是为在类声明中的函数原型提供代码,成员函数定义与常规函数非常类似,它们有函数头与函数体,也有返回类型和参数,但是它们还包含两个特殊的特征

  1. 定义成员函数使用作用域解析符( : : :: ::)来标识函数所属的类
  2. 类方法可以访问类的 p r i v a t e private private组件

首先成员函数的函数头使用作用域解析符来指出函数所属的类 如下所示

void Stock::update(double price);

上述代码表示update函数是Stock类的成员函数。

因此作用域解析运算符确定了方法定义对应的类的身份,我们说标识符update()具有类作用域。Stock类的其他成员函数不必使用作用域解析符号,就可以使用update方法,因为它们属于同一个类。类方法的完整名包含类名,我们说 Stock::update()是函数的限定名,而简单的update()是全名的缩写(非限定名),他只能在类作用域中使用。

内联方法

其定义位于类声明中的函数都将自动成为内联函数,类声明通常将短小函数的作为内联函数。如果希望也可以在类声明之外定义内联成员函数,只需要在定义函数的使用 i n l i n e inline inline关键词就可以了,内联的函数的特殊规则要求在每个使用它的文件中都进行定义,为了确保内联定义对多文件程序中的所有程序可用,最简便的方法是在类声明定义内联函数

方法使用哪个对象

如何创建类对象,最简单的方法是声明类变量

Stock apple,google;

如何使用成员函数

apple.show();
google.buy(20,12.99);

调用成员函数他将使用被用来调用它的对象的数据成员

所创建的每个对象都有自己的存储空间,用于存储其内部变量和类成员,但是所有的类的对象共享同一组类的方法。即每一个方法只有一个副本(遵循函数是静态的法则)。也就是说它们将执行同一个代码块,只是将这些代码块用于不同的数据,在OOP中调用成员函数被称为发送信息

使用类

C++的目标是使得使用类和使用基本的内置类型尽可能相同,要创建类对象,可以声明类变量或者使用new为类对象分配内存空间,还可以将一个对象赋值给另一个等等等…


客户/服务器模型

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


小结

指定类设计的第一步是提供类声明,类声明类似于结构声明,可以包含数据成员和函数成员,声明有私有部分,即只能被成员函数(或者后面提及友元)访问,声明还具有共有部分,在其声明的成员可以直接使用类对象访问,通常类数据成员被放在私有部分,称函数函数被放在公有部分

公有部分的内容构成了设计的抽象部分—公有接口,将数据封装到私有部分可以保护数据的完整性,这被称为数据隐藏。C++通过类设计使得抽象数据隐藏封装等OOP特性很容易实现。

指定类设计的第二部是实现类成员函数,可以在类声明提供函数定义而不是函数声明(除非函数很小可以被作为内联函数),但是通常的做法是在类声明中提供函数声明。在这种情况需要通过作用域解析符来指出成员函数属于哪个类。

要创建对象(或者说类的实例)只需要用类名作为类型名。

类的函数可以通过类的实例来调用,需要使用点号运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值