面试题 1 :什么是操作符重载,它的用途是什么
操作符重载是 C++ 中的一个重要概念,它允许程序员重新定义或重载已有的操作符,使其能够用于用户自定义的数据类型。这种重载的目的是为了使得用户自定义的数据类型能够像内置类型一样方便地进行运算。
具体来说,操作符重载的用途包括:
扩展运算符的适用范围:通过重载,可以使同一运算符作用于不同类型的数据时导致不同类型的行为,从而扩展 C++ 中提供的运算符的适用范围,以用于类所表示的抽象数据类型。
简化代码:操作符重载可以使代码更加简洁易懂。通过为自定义类型重载操作符,可以像使用内置类型一样使用这些操作符,而无需定义额外的函数来完成相同的操作。
提高代码可读性:操作符重载可以将概括性的抽象操作符具体化,便于外部调用而无需知晓内部具体运算过程,从而提高代码的可读性。
面试题 2 :如何使用友元函数重载操作符
友元函数重载操作符一般是应用在非成员函数重载的情况下,这种重载通常用于定义两个类之间的操作符行为。非成员函数重载操作符通常被声明为友元函数,以便它们可以访问类的私有和保护成员。非成员函数重载操作符通常用于定义二元操作符的行为,这些操作符作用于类的两个对象。
如下是一个非成员函数重载 + 操作符的样例:
#include <iostream>
class MyClass
{
public:
// 构造函数
MyClass(int val1,int val2) : m_val1(val1), m_val2(val2) {
}
// 重载 + 操作符为非成员函数
friend MyClass operator+(const MyClass& lhs, const MyClass& rhs);
int getVal1() const {
return m_val1; }
int getVal2() const {
return m_val2; }
private:
int m_val1;
int m_val2;
};
// 非成员函数重载 + 操作符
MyClass operator+(const MyClass& objLeft, const MyClass& objRight)
{
return MyClass(objLeft.m_val1 + objRight.m_val1, objLeft.m_val2 + objRight.m_val2

本文介绍了C++中的操作符重载,包括扩展运算符适用范围、友元函数重载操作符的示例以及重载时应注意的语义一致性、返回类型、异常处理和性能等因素。
最低0.47元/天 解锁文章
1140

被折叠的 条评论
为什么被折叠?



