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

简介: 43运算符重载函数作为类成员函数和友元函数

C++入门——60s从0到1

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

 

在C++中,运算符重载函数可以作为类成员函数或友元函数来实现。

 

运算符重载函数作为类成员函数

 

运算符重载函数作为类成员函数是C++语言的一种特性,它允许开发者将自定义类型的运算符重载为一个类的成员函数。这种方式的优点是封装性和安全性较高,因为该运算符只能被该类型的对象所调用,并且可以访问类的私有成员变量和成员函数。

 

实现方法

 

要将运算符重载函数作为类成员函数,需要按照以下步骤进行操作:

 

1. 在类的定义中定义一个新的函数来代替原有的运算符。例如,要重载 `+` 运算符,可以在类中定义一个新的函数 `operator+()`。

 

2. 在函数的返回类型中指定与操作数类型相同的类型。例如,如果要重载 `+` 运算符,返回类型应该是与操作数类型相同的类型。

 

3. 在函数的参数列表中指定两个操作数类型。例如,如果要重载 `+` 运算符,参数列表应该有两个操作数类型。

 

4. 在函数体中实现相应的功能。例如,在 `operator+()` 函数中实现两个操作数相加的功能。

 

使用方法

 

要将运算符重载函数作为类成员函数,需要按照以下方式进行调用:

 

MyClass a, b;

MyClass c = a + b;  // 使用加法运算符

 

其中,`MyClass` 是自定义类型,`a` 和 `b` 是该类型的对象,`c` 是通过调用加法运算符 `operator+()` 来计算得到的新对象。

 

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

 

运算符重载函数作为友元函数是C++语言的另一种特性,它允许开发者将自定义类型的运算符重载为一个与该类型无关的函数。这种方式的优点是灵活性较高,因为该运算符可以被任何类型的对象所调用,并且可以访问类的私有成员变量和成员函数。但是需要注意,将运算符重载为友元函数会降低封装性和安全性。

 

实现方法

 

要将运算符重载函数作为友元函数,需要按照以下步骤进行操作:

 

1. 在类的外部定义一个新的函数来代替原有的运算符。例如,要重载 `+` 运算符,可以在类的外部定义一个新的函数 `operator+()`。

 

2. 将该函数声明为类的友元函数。例如,可以在类中使用 `friend` 关键字将 `operator+()` 声明为友元函数。

 

3. 在函数的返回类型中指定与操作数类型相同的类型。例如,如果要重载 `+` 运算符,返回类型应该是与操作数类型相同的类型。

 

4. 在函数的参数列表中指定两个操作数类型。例如,如果要重载 `+` 运算符,参数列表应该有两个操作数类型。

 

5. 在函数体中实现相应的功能。例如,在 `operator+()` 函数中实现两个操作数相加的功能。

 

使用方法

 

要将运算符重载函数作为友元函数,需要按照以下方式进行调用:

 

MyClass a, b;

MyClass c = operator+(a, b);  // 使用加法运算符

 

其中,`MyClass` 是自定义类型,`a` 和 `b` 是该类型的对象,`c` 是通过调用加法运算符 `operator+()` 来计算得到的新对象。需要注意的是,在使用友元函数时需要在调用时显式地传递对象或对象的引用作为参数。

目录
相关文章
|
7月前
|
编译器 C++
c++重载函数和重载运算符
c++重载函数和重载运算符
38 0
|
7月前
|
C++ 编译器
|
7月前
|
程序员 编译器 C++
c++重载运算符和重载函数
c++重载运算符和重载函数
37 1
|
7月前
|
C++
C++程序中的类成员函数
C++程序中的类成员函数
52 1
|
7月前
友元函数、成员函数和普通函数使用上的不同
友元函数、成员函数和普通函数使用上的不同
26 0
|
编译器 C++
C++ 重载函数
C++ 重载函数
58 0
|
编译器
拷贝构造函数和运算符重载(下)
拷贝构造函数和运算符重载(下)
|
存储 编译器 C++
拷贝构造函数和运算符重载(上)
拷贝构造函数和运算符重载(上)
|
编译器 C++
C++的重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。 C++ 中的函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。 下面的实例中,同名函数print
|
安全 编译器 C++
C++ 引用,友元,运算符重载
C++ 引用,友元,运算符重载