c++面向对象程序设计教程第四版第二章
时间: 2025-01-01 09:31:09 浏览: 12
### C++ 面向对象程序设计教程第四版第二章概述
#### 函数与引用参数
C++ 中提供了引用机制,其主要用途之一是将引用作为函数的参数。这使得可以直接操作原始变量而非副本,提高了效率并简化了编程逻辑[^2]。
考虑一个简单的交换两个整数值得例子:
```cpp
#include <iostream>
using namespace std;
void swap(int* m, int* n) {
int temp;
temp = *m;
*m = *n;
*n = temp;
}
int main() {
int a = 5, b = 10;
cout << "a = " << a << " b = " << b << endl;
swap(&a, &b);
cout << "a = " << a << " b = " << b << endl;
return 0;
}
```
上述代码展示了如何利用指针来实现两数值互换的功能。然而,在现代C++实践中更推荐使用引用方式替代显式的指针传递方法,因为这样可以提高代码的安全性和可读性。
#### 常量对象及其应用
当定义了一个`const`类型的对象时,默认情况下不允许改变该对象的数据成员值。但是可以通过声明某些数据成员为`mutable`属性来绕过这一限制,允许这些特定字段即使是在常量上下文中也可以被修改[^3]。
例如:
```cpp
class Student{
public:
Student(int n, float s):num(n), score(s){}
void change(int n, float s) const {
num = n;
score = s;
}
void display() const {
cout << num << " " << score << endl;
}
private:
mutable int num;
mutable float score;
};
int main(){
const Student stud(101, 78.5);
stud.display();
stud.change(101, 80.5);
stud.display();
return 0;
}
```
这段代码展示了一种场景——即尽管`stud`是一个不可变的对象实例,但由于`change()`内部的操作仅限于那些标记为`mutable`的数据成员(`num`, `score`)上,因此仍能成功执行更改动作而不违反编译期检查规则。
#### 类间关系之Uses-A模式
面向对象设计中,“uses-a”是一种常见的关联形式,意味着某个类的部分功能依赖于其他类的服务或资源。这类关系通常通过让一个类的方法接受另一个类的对象作为参数的形式体现出来;此外还可以借助友元(friend)关键字建立更加紧密的合作关系[^4]。
阅读全文