类的重点在于两点:

  1. 数据抽象。
    1. 接口。用户所能使用的方法。
    2. 实现。实现接口的背后的原理。
  2. 封装。隐藏实现的部分。

成员函数

成员函数就是属于类对象的函数。隶属于成员本身。通过点运算符来调用。

声明时必须在类内部。而定义可以在类之外。

非成员函数,并不是类的一部分,不能被类对象调用。但希望可以对类对象进行操作,或者对多个类对象进行操作。

可以被重载。

this

所有的成员函数,都有一个隐式参数this,一个常量指针指向调用这个函数的类对象。通过这种方式告诉成员函数是哪一个类对象在调用它。

$$ a.b()\\=class\_name::b(\&a) $$

const成员函数

由于this是一个指向非常量的常量指针,因此常量对象不能调用普通成员函数,因为底层const不同。

通过在函数的形参表后增加const关键字使得将this转为指向常量的常量指针,通过这种方式使得常量对象可以调用该函数,也就是const成员函数。

const成员函数常用来获取类的数据成员。并且在此过程中不能对类成员产生更改。

成员与成员函数

在编译时,会先编译成员的声明,后编译成员函数,因此成员函数可以任意调用成员。

在外部定义成员函数

在外部定义成员函数需要在函数名前增加类作用域,通过这种方式将这个函数的这个块,也就是作用域声明在类的作用域内,使其能够调用类的成员函数与成员。

成员函数的返回值