迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

C++ 中的运算符

作者:迹忆客 最近更新:2023/03/15 浏览次数:

本文将演示如何在 C++ 中使用运算符的多种方法。

C++ 语言提供的常用运算符

运算符是 C++ 编程中表达式的重要组成部分。它们提供对提供的操作数进行的不同操作,评估结果通常由程序员根据需要使用。我们可以将操作数粗略地分为两种类型:普通运算符和特殊运算符。通用运算符几乎是大多数编程语言中普遍实现的操作,其中包括算术、逻辑、比较、赋值、成员访问运算符等。

与代数中的规则类似,当多个运算符组成表达式时,存在优先级和结合性特征。我们将在本文中总结其中的一些规则,但完整的描述应参考语言文档和运算符优先级表。请注意,基本算术运算的优先级和结合性规则类似于常见的数学规则。因此,以下示例中的表达式输出整数 2010,而不是 6030

#include <iostream>

using std::cout; using std::endl;

int main()
{
    cout << 10 + 2 * 5 << endl;
    cout << 40 - 20 - 10 << endl;

    return EXIT_SUCCESS;
}

输出:

20
10

程序员可以使用括号来覆盖优先级和结合性的一般规则,就像在代数中所做的那样。每个带括号的复合表达式将被视为一个单独计算的单元。使用指针算法时的常见错误之一是遗漏括号。

如果我们使用指针算术加解引用操作访问数组中的元素,我们需要将算术一放在括号中。否则,给定指针指向的值将增加操作数而不是指针本身,因为解引用运算符的优先级高于加法。

#include <iostream>

using std::cout; using std::endl;

int main()
{
    int vec[] = {10, 22, 63, 14};
    cout << *vec + 2 << endl;
    cout << *(vec + 2) << endl;

    return EXIT_SUCCESS;
}

输出:

12
63

C++ 中的重载操作

在 C++ 语言中可以遇到的最强大的功能之一是,它允许程序员定义在用户定义的对象(如类)上调用运算符时应如何操作。由于此功能为给定运算符提供替代操作,因此称为重载运算符。但是,请注意,无法通过实现重载运算符来修改操作数的数量和优先级。

以下代码片段声明了一个 Person 类,该类包含两个字符串数据成员,并为此类型重载了 + 运算符。重载运算符的实现类似于具有特殊名称的其他类函数,以 operator 关键字开头,后跟运算符符号本身。这些函数可以有返回类型和参数列表。请注意,运算符重载的限制之一是程序员不能创建像 $>!! 这样的新运算符。

#include <iostream>
#include <string>
#include <utility>
#include <vector>

using std::cout; using std::endl;
using std::vector; using std::string;

class Person {
public:
    Person(string s1, string s2):
        name(std::move(s1)), surname(std::move(s2)) {}

    Person operator+(const Person &p){
        Person ret(name + p.name, surname + p.surname);
        return ret;
    }

    void printPerson() {
        cout << name << " " << surname << endl;
    }

private:
    string name;
    string surname;
};

int main() {
    Person P1("Buddy", "Rich");
    Person P2("Lady", "Bee");
    P1 = P1 + P2;

    P1.printPerson();

    exit(EXIT_SUCCESS);
}

输出:

BuddyLady RichBee

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C++ 中通过掷骰子生成随机值

发布时间:2023/04/09 浏览次数:169 分类:C++

本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。

在 C++ 中使用模板的链表

发布时间:2023/04/09 浏览次数:158 分类:C++

本文解释了使用模板在 C++ 中创建链表所涉及的各个步骤。工作程序演示了一个链表,该链表使用模板来避免在创建新变量时声明数据类型的需要。

在 C++ 中添加定时延迟

发布时间:2023/04/09 浏览次数:142 分类:C++

本教程将为你提供有关在 C++ 程序中添加定时延迟的简要指南。这可以使用 C++ 库为我们提供的一些函数以多种方式完成。

在 C++ 中创建查找表

发布时间:2023/04/09 浏览次数:155 分类:C++

本文重点介绍如何创建查找表及其在不同场景中的用途。提供了三个代码示例以使理解更容易,并附有代码片段以详细了解代码。

如何在 C++ 中把字符串转换为小写

发布时间:2023/04/09 浏览次数:63 分类:C++

介绍了如何将 C++ std::string 转换为小写的方法。当我们在考虑 C++ 中的字符串转换方法时,首先要问自己的是我的输入字符串有什么样的编码

如何在 C++ 中确定一个字符串是否是数字

发布时间:2023/04/09 浏览次数:163 分类:C++

本文介绍了如何检查给定的 C++ 字符串是否是数字。在我们深入研究之前,需要注意的是,以下方法只与单字节字符串和十进制整数兼容。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便