运算符重载 += 操作符

上几篇文章我们介绍了加号运算符的重载,实现了两个类之间相加得出我们想要的结果,本文将介绍+=操作符的重载,使两个类的对象可以使用+=运算符来进行运算。其中要注意的是返回值为引用(&)的重要性。 要实现上面的需求,我们只需重载 operatpr+= 操作符即可,下面就是一个简...

运算符成员函数与友元函数重载

上一篇文章我们介绍了运算符重载的目的和一个简单的应用案例。但运算符重载绝非我们想想的那么简单和容易,有很多陷阱我们如果我们还没有去踩过,是不会了解清楚内部的工作原理的。本文只介绍一下运算符重载的两种方式,成员函数重载和友元函数重载,并不具体到某些运算符的具体案例。 成员函数重载(与上一篇文章一致): #incl...

运算符重载的目的及应用场景

运算符重载的目的是让我们可以对自己编写的类实现 + - * / 等运算操作,更多的比如>> <<  new delete 等运算符都是可以重载的,将这些运算符重载后我们就可以对类中的数据成员实现我们需要的运算了。 比如正常情况下,加号运算符(+)在给普通的字面值常量做运算时,可...

友元类的实现

在将一个类中的成员函数作为另一个类的友元函数的案例中我们看到,为了一个其他类的函数可以访问本类中的私有成员,将 distance 函数声明成了 friend 函数。其实我们也完全可以将整个 ManagerPoint 类声明为 Point 类的友元类。代码如下: #include using namespace ...

类A的成员函数做类B的友元函数

这种方法相对麻烦,主要是在两个类之间的前后声明有着复杂的逻辑关系。但只要我们理清思路,是可以实现的。跟着我从最初的想法到实现一步一步的理顺逻辑,就非常容易理解如何操作了。 首先,我们要实现让 ManagerPoint 类中的成员函数 distance() 操作 Point 类中的私有数据成员_x和_y,所以要将...

友元概念及简单使用方法

在C++中类的出现,将数据和方法都封装在类中,似有的数据成员只有类中的成员函数才能操作,但有些时需要定义某些函数,它不是类中的成员,但需要频繁的操作类中的私有数据成员。此时可以将这些函数定义为某个类的友元函数。除了友元函数外,还有友元类,两者都成为友元。友元的出现提高了程序的运行效率,但是破坏了类的封装性和隐蔽性...

指向类数据成员的指针

在C++中,可以定义一个指针,使其指向类成员或成员函数,然后通过指针 来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。它类似与static成员函数或成员变量,具有共享的属性。每一个实例化的对象都可以借助指向类数据成员的指针来访问指向的数据。它的结构图如下: 简单的代码实现: #include #...

static修饰的成员变量及函数

static成员变量又称为静态成员变量,在多个对象间共享使用,并且static静态变量在初始化时必须在类外初始化,可以直接通过“类名::变量”访问,哪怕是还没有生成对象时一样可以访问,以此看来static成员变量不隶属于某个对象,而隶属于类,只是所有该类的对象都可以使用而已。 另外,静态的成员函数不在于多个对象...

const修饰类中成员变量及函数

const在类中,可以修饰成员变量和成员函数,主要目的也是保护成员内部的一些属性不被轻易的修改。以保证数据的完整性。下面分别介绍const修饰成员变量和成员函数。 const修饰成员变量表示成员常量,只能在初始化列表中赋值,可以被const和非const成员函数调用,但不能修改其值。 #pragma oncec...

C++ new关键字的返回值

在C中,我们申请一块内存时,往往会根据malloc的返回值来判断是否为NULL而判定是否申请内存成功,但C++中,new关键字并不像malloc一样是有返回值的。所以以下语法是没有意义的语法。 int* p = new int(5);if (NULL == p) return -1...