C++运算符重载:友元函数解析

需积分: 14 4 下载量 177 浏览量 更新于2024-08-19 收藏 8.66MB PPT 举报
"运算符重载为友元函数-C++程序设计(谭浩强完整版)" 在C++编程中,运算符重载是一项重要的特性,它允许我们为已有的运算符赋予新的含义,以便用于自定义类型。运算符重载通常有两种方式:作为成员函数和作为友元函数。 当运算符重载为成员函数时,至少有一个操作数是类的实例,该实例通常是左操作数。例如,在描述中提到的`c=a+b;`这一语句,实际上在调用`a`对象的`operator+`成员函数,并传入`b`作为参数。同样的,对于自增运算符`++`,如`c=++a;`,实际上是调用了`a`的`operator++`成员函数。 然而,有些运算符不适合作为成员函数重载,尤其是那些需要访问两个对象私有成员的运算符,例如赋值运算符`=`。这时,我们可以选择将运算符重载为友元函数。友元函数是非成员函数,但它可以访问类的私有和保护成员。重载`+=`运算符就是一个常见的友元函数例子,`c+=a;`等同于`c.operator+=(a);`,这里的`operator+=`通常定义为友元函数,因为它需要同时修改`c`和`a`的对象状态。 C++语言源自C语言,由Dennis Ritchie和Brian Kernighan在B语言基础上发展而来,主要为编写UNIX操作系统而设计。C++是在C语言的基础上增加了面向对象特性,如类、模板、异常处理和运算符重载等,使得它成为一个功能更加强大的编程语言。 C++的一个显著特点是结构化编程,它的语言简洁,使用灵活,既能处理大型系统程序,也能编写小型控制程序。它具有丰富的运算符集,包括算术逻辑运算和位运算,支持灵活的数据结构,这使得C++程序表达力强,功能强大。 此外,C++程序具有良好的可移植性,能够在不同平台之间轻松移植,而不需要大量修改代码。尽管C++语法相对自由,对于初学者可能较难掌握,但熟练的程序员可以利用这种灵活性设计出高效且通用的代码。不过,这也意味着调试C++程序可能比其他高级语言更具挑战性,需要对语言规则有深入理解。 总结来说,运算符重载是C++中实现类行为扩展的关键机制,它可以是成员函数也可以是友元函数,这取决于所需操作的性质。同时,C++作为一门强大的编程语言,继承了C语言的优点,并引入了面向对象的特性,使得程序设计更加灵活高效。