亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

带有示例的 C++ 运算符重载

什么是运算符重载?

使用运算符重载 在 C++ 中,您可以为一个范围内的运算符指定多个含义。运算符重载的目的是为用户定义的数据类型提供运算符的特殊含义。

借助运算符重载,您可以重新定义大多数 C++ 运算符。您还可以使用运算符重载来使用一个运算符执行不同的操作。

在本 C++ 教程中,您将学习:

语法

要重载 C++ 运算符,您应该在 Class 中定义一个特殊函数,如下所示:

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

以下是对上述语法的解释:

示例 1:

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 在我们的代码中包含 iostream 头文件以使用其功能。
  2. 在我们的程序中包含 std 命名空间,以便在不调用它的情况下使用它的类。
  3. 创建一个名为 TestClass 的类。
  4. 使用 private 访问修饰符,它将类成员标记为可私有访问。
  5. 创建一个整数变量count。此变量可以私下访问。
  6. 使用公共访问修饰符,它将类成员标记为可私有访问。
  7. 使用类构造函数将变量 counter 初始化为 5。
  8. 重载 -- 运算符的含义。
  9. 运算符会将变量 x 的值减 1。
  10. 运算符重载部分结束。操作员已获得新名称。
  11. 定义一个名为 Display() 的函数。
  12. 当调用 Display() 函数时,在控制台上打印变量计数的值以及其他文本。 } 标志着 Display() 函数主体的结束。
  13. 类主体结束。
  14. 调用 main() 函数。应在此函数中添加程序逻辑。
  15. 创建一个 TestClass 类的实例并将其命名为 tc。
  16. 这将调用 void 运算符 –() 函数。
  17. 使用TestClass Class的姿态调用Display()函数。
  18. 函数必须在成功完成后返回值。
  19. main() 函数体结束。

C++ 中运算符重载的不同方法

您可以通过实现以下任何类型的函数来执行运算符重载:

  1. 会员功能
  2. 非会员功能
  3. 好友功能

如果需要访问私有和受保护的类成员,可以将运算符重载函数设为友元函数。

是否可以重载所有 C++ 运算符?

不,有些 C++ 运算符不能重载。

它们包括:

要记住的事情:

  1. 通过运算符重载,您可以重新定义运算符仅适用于用户定义的类型(对象、结构)的方式。您不能将其用于内置类型(float、char、int 等)。
  2. =和 &C++ 运算符默认被重载。例如,您可以使用 =运算符直接复制同一类的对象。
  3. 运算符优先级不会改变运算符的关联性和优先级。不过,您可以使用括号更改计算顺序。
  4. 有四个运算符不能在 C++ 中重载。它们包括范围解析运算符 (::)、成员选择运算符 (.)、通过指向函数运算符的指针进行成员选择 (.*) 和三元运算符 (?:)。

运算符重载规则:

以下是运算符重载的规则:

如何重载运算符:

示例 1:

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 在我们的代码中包含 iostream 头文件以使用其功能。
  2. 在我们的程序中包含 std 命名空间,以便在不调用它的情况下使用它的类。
  3. 创建一个名为 OperatorOverload 的类。
  4. 使用 private 访问修饰符,它将类成员标记为可私有访问。
  5. 创建一个整数变量x。此变量可以私下访问。
  6. 使用公共访问修饰符,它将类成员标记为可私有访问。
  7. 使用类构造函数将变量 x 初始化为 10。
  8. 重载 ++ 运算符的含义。
  9. 运算符会将变量 x 的值增加 2。
  10. 运算符重载部分结束。操作员已获得新名称。
  11. 调用 Print() 函数。
  12. 调用 Print() 函数时,在控制台上打印变量 x 的值以及其他文本。
  13. Print() 函数主体的结尾。
  14. 类主体结束。
  15. 调用 main() 函数。应在此函数中添加程序逻辑。
  16. 创建一个名为 ov 的 OperatorOverload 类的实例。
  17. 这将调用 void 运算符 ++() 函数。
  18. 使用 OperatorOverload 类的姿态调用 Print() 函数。
  19. 函数必须在成功完成后返回值。
  20. main() 函数体结束。

示例 2:

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

输出:

下面是代码截图:

代码说明:

  1. 将 iostream 头文件包含到我们的程序中,以便使用它的功能。
  2. 将 std 命名空间包含到我们的程序中,以便在不调用它的情况下使用它的类。
  3. 创建一个名为 TestClass 的类。 { 标志着类主体的开始。
  4. 使用 private 访问修饰符将变量标记为私有,这意味着它们只能从类中访问。
  5. 定义两个整数变量,实数和超数。
  6. 使用 public 访问修饰符将构造函数标记为 public,这意味着即使在 Class 之外也可以访问它。
  7. 创建类构造函数并初始化变量。
  8. 初始化变量real的值。
  9. 初始化变量的值。
  10. 构造函数主体结束。
  11. 覆盖 + 运算符的含义。
  12. 创建TestClass类型的数据类型结果。
  13. 对复数使用 + 运算符。此行会将一个数字的实部添加到另一个数字的实部。
  14. 对复数使用 + 运算符。此行会将一个数字的虚部添加到另一个数字的虚部。
  15. 程序执行成功后会返回变量result的值。
  16. 结束+运算符新含义的定义,即重载。
  17. 调用 print() 方法。
  18. 在控制台打印添加后的新复数。
  19. print() 函数体结束。
  20. TestClass 类主体结束。
  21. 调用 main() 函数。
  22. 传递要添加的实部和复杂部分的值。 c1 的第一部分将添加到 c2 的第一部分,即 9+4。 c1的第二部分会和c的第二部分相加,即5+3。
  23. 使用重载的 + 运算符执行操作并将结果存储在变量 c3 中。
  24. 在控制台上打印变量 c3 的值。
  25. main() 函数体结束。

总结:


C语言

  1. 在 C++ 编程中将数组传递给函数
  2. Python 运算符重载
  3. C++ 中的运算符示例:什么是、类型和程序
  4. C++ do...while 循环与示例
  5. 带有示例的 C++ 指针
  6. C++ Char 数据类型及示例
  7. C++ 结构与示例
  8. C++ 中的 std::list 示例
  9. 带有程序示例的 C++ 函数
  10. 带有示例的 Python Lambda 函数
  11. 带有示例的 Python round() 函数
  12. 带有示例的 Python map() 函数