突破编程_C++_面试(操作符重载)

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

面试题 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
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值