当前位置:   article > 正文

C++高级面试题:解释 C++ 中的移位操作符重载(Shift Operator Overloading)_c++中关于operator的面试题

c++中关于operator的面试题

解释 C++ 中的移位操作符重载(Shift Operator Overloading)

在 C++ 中,移位操作符(Shift Operators)包括左移操作符(<<)和右移操作符(>>)。这些操作符通常用于对整数进行位级别的移位操作。除了用于位级别操作之外,这些操作符还可以被重载以适用于自定义类型。

移位操作符重载允许您定义自定义类型的移位行为。通过重载这些操作符,您可以自定义对象的左移和右移行为,并将其与其他操作符一样使用。

移位操作符的重载语法如下所示:

ReturnType operator<<(ParameterType);
ReturnType operator>>(ParameterType);
  • 1
  • 2

其中 operator<< 表示左移操作符的重载,operator>> 表示右移操作符的重载。ReturnType 是返回类型,ParameterType 是参数类型

以下是一个简单的示例,展示了如何重载左移和右移操作符:

#include <iostream>

class MyNumber {
private:
    int value;

public:
    MyNumber(int val) : value(val) {}

    // 重载左移操作符
    friend std::ostream& operator<<(std::ostream& os, const MyNumber& num) {
        os << "MyNumber: " << num.value;
        return os;
    }

    // 重载右移操作符
    friend std::istream& operator>>(std::istream& is, MyNumber& num) {
        is >> num.value;
        return is;
    }
};

int main() {
    MyNumber num1(5);
    std::cout << num1 << std::endl; // 使用重载的左移操作符

    MyNumber num2(0);
    std::cin >> num2; // 使用重载的右移操作符
    std::cout << num2 << std::endl;

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

在这个示例中,我们定义了一个名为 MyNumber 的类,该类具有一个私有成员变量 value,表示一个整数值。然后,我们重载了左移操作符 operator<< 和右移操作符 operator>>,以实现自定义对象的输入和输出行为。在 main() 函数中,我们使用重载的操作符来输出和输入 MyNumber 对象。
演示了如何重载左移和右移操作符来操作复数

#include <iostream>

class Complex {
private:
    double real;
    double imag;

public:
    Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}

    // 重载左移操作符
    friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
        os << c.real << " + " << c.imag << "i";
        return os;
    }

    // 重载右移操作符
    friend std::istream& operator>>(std::istream& is, Complex& c) {
        std::cout << "Enter real part: ";
        is >> c.real;
        std::cout << "Enter imaginary part: ";
        is >> c.imag;
        return is;
    }
};

int main() {
    Complex c1(3.5, 2.8);
    std::cout << "c1 = " << c1 << std::endl; // 使用重载的左移操作符

    Complex c2;
    std::cin >> c2; // 使用重载的右移操作符
    std::cout << "c2 = " << c2 << std::endl;

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

在这个示例中,我们定义了一个名为 Complex 的类,表示复数,其中包含实部和虚部。我们重载了左移操作符 operator<< 和右移操作符 operator>>,以便能够以友好的方式打印和输入复数对象。在 main() 函数中,我们使用重载的操作符来输出和输入复数对象。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/926378
推荐阅读
相关标签
  

闽ICP备14008679号