运算符重载的函数作为类的成员函数和友元函数

博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++

座右铭:“不要等到什么都没有了,才下定决心去做”

大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点

目录

运算符重载的函数作为类的成员函数和友元函数

运算符重载定义为类的成员函数

运算符重载函数作为类的友元函数

实现“+”,“-“的普通重载函数和友元重载函数

单目运算符"++"和"--"的重载


运算符重载的函数作为类的成员函数和友元函数

运算符重载定义为类的成员函数

将运算符重载定义为类的成员函数的原型在内部声明格式:

class 类名
{
  ...
    返回类型 operator 运算符(参数列表);
  ...
};

在类外定义运算符重载函数的格式:

返回类型 类名::operator 运算符(参数列表)
{
    ...
}

运算符重载函数作为类的友元函数

将运算符重载函数作为类的友元函数。它与用成员函数重载运算符的函数的不同在于,成员函数重载运算符的函数本身是类中的成员函数,而友元函数是独立于类外的普通函数。

将运算符重载函数定义为类的友元函数,其原型在类的内部声明格式如下:

class 类名
{
    ...
      friend 返回类型 operator 运算符(参数列表);
    ...
};

在类外定义友元运算符重载函数的格式:

返回类型 operator 运算符(参数列表)
{
    ...
}

与用成员函数定义的方法相比较,只是在类声明函数原型时前面多了一个关键字friend,表明这是一个友元运算符重载函数,只有声明为友元函数,才可以访问类的private成员;由于友元运算符重载函数不是该类的成员函数,所以在类外定义时不需要加上类名。

实现“+”,“-“的普通重载函数和友元重载函数

#include
using namespace std;
class A
{
public:
    A(double x=0,double y=0):a(x),b(y)
    {
        ;
    }
    void show()
    {
        cout<<"运算后的结果为:"<

大家可能会疑惑,运算符重载函数可以是类的成员函数,也可以是类的友元函数,是否可以既不是类的成员函数也不是类的友元函数,其实是可以的,但是很少会用到,原因是普通函数不能直接访问类的私有成员,由于友元的使用会破坏类的封装,因此从原则上说,要尽量将运算符重载为成员函数。有时为了方便理解,一般将单目运算符重载为成员函数,将双目运算符重载为友元函数但是也有例外,C++规定,有的运算符(赋值运算符,下标运算符,函数调用运算符)必须重载为类的成员函数,有的运算符则不能重载为类的成员函数(插入运算符"<<"和流提取运算符">>"、类型转化运算符)。

单目运算符"++"和"--"的重载

有两种形式:前置的++ --,后置的++ --

有两种方法:运算符重载的成员函数  运算符重载的友元函数

(1)运算符重载的成员函数:

(1)运算符重载的成员函数
#include
using namespace std;
class A
{
public:
    A(int count=0):Count(count)
    {
        ;
    }
    void show()
    {
        cout<<"运算后结果为:"<

(2)运算符重载的友元函数:

(1)运算符重载的成员函数
#include
using namespace std;
class A
{
public:
    A(int count=0):Count(count)
    {
        ;
    }
    void show()
    {
        cout<<"运算后结果为:"<

如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家!    

你可能感兴趣的:(「初学」c++,c++,开发语言,运算符的重载,友元函数)