C++中的引用:别名与友元、重载解析

需积分: 5 0 下载量 193 浏览量 更新于2024-07-14 收藏 1.56MB PPT 举报
"这篇文档是关于C++编程中的引用、友元和重载的讲解,由北京理工大学信息与电子学院的白霞教授讲解。主要内容包括引用的概念、引用的使用方式、友元的作用以及函数和运算符的重载原理。" 在C++中,引用是一种非常特殊的类型,它是变量的别名,提供了另一种访问同一块内存的方式。引用不是独立的存储单元,而是已存在变量的另一个名字。在声明引用时,必须同时对其进行初始化,之后不能改变引用的对象。例如: ```cpp int someInt = 19; int &rInt = someInt; // 引用初始化 ``` 一旦`rInt`被初始化为`someInt`,`rInt`就成为`someInt`的别名,它们指向同一块内存。修改`rInt`的值实际上是在修改`someInt`的值。如: ```cpp int otherInt = 30; rInt = otherInt; // 实际上是修改someInt的值,someInt = 30 ``` 引用在函数参数传递中尤其有用,可以避免复制开销,提高效率。函数可以接受引用作为参数,并且可以返回引用,使得函数可以直接修改调用者提供的变量,或者让函数返回一个对象的引用,而不是其副本。 ```cpp void updateValue(int &val) { val = 42; } int main() { int num = 10; updateValue(num); // num现在是42,因为引用传递 return 0; } ``` 友元是C++中类的一个特性,允许一个类的成员函数或另一个类访问其私有或受保护的成员。友元函数不在类的成员列表中,但可以访问类的私有和受保护成员,增强了代码的灵活性,但可能影响封装性。 ```cpp class A { private: int secret; friend void accessSecret(A &a); }; void accessSecret(A &a) { a.secret = 100; // 友元函数可以访问A的私有成员 } ``` 重载是C++的多态性体现之一,允许在同一作用域内有多个同名函数,通过不同的参数列表来区分它们。函数重载可以基于参数数量、参数类型或参数顺序的不同。同样,运算符也可以被重载,以便为自定义类型赋予特定的操作行为。 ```cpp class MyNumber { public: MyNumber operator+(const MyNumber &other) { // 自定义加法操作 } }; ``` 总结来说,引用是C++中的强大工具,提供了安全的别名机制;友元增加了代码的灵活性,但需谨慎使用以保持封装性;而重载则增强了代码的可读性和功能多样性。这三者都是C++面向对象编程中的重要概念。