2022年计算机二级C++复习资料:私有数据成员和友元.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在C++编程语言中,面向对象编程的一个关键概念是封装,它强调保护数据的安全性和隐藏实现细节。在C++中,我们可以通过访问控制修饰符(如public、private和protected)来实现封装。本文将深入讨论私有数据成员和友元在C++中的使用,这是2022年计算机二级考试C++复习的重要知识点。 一、私有数据成员 私有数据成员(private members)是类中只能在类内部访问的数据成员。外部代码不能直接访问这些成员,以防止未经授权的修改或访问。通常,我们会提供公有成员函数(public member functions),即接口,来访问和修改私有数据成员。例如: ```cpp class Date { int mo, da, yr; public: Date(int m, int d, int y) { mo = m; da = d; yr = y; } int getyear() const { return yr; } void setyear(int y) { yr = y; } }; ``` 在这个例子中,`getyear()` 是一个取值函数,返回私有成员 `yr` 的值,而 `setyear()` 是一个赋值函数,允许设置 `yr` 的值。这些函数构成了公共接口,外部代码可以通过它们来操作私有数据。 二、友元(Friend) 友元(Friend)是C++中的一个特性,允许类的私有或受保护成员对其他类或函数开放。友元可以是类的成员函数或者非成员函数。友元函数可以访问声明它的类的私有和受保护成员,即使它不是该类的成员。 1. 友元类:一个类可以声明另一个类为友元,这样友元类的成员函数就可以访问原类的私有和受保护成员。 ```cpp class Time; // 前向声明 class Date { int mo, da, yr; friend class Time; // 声明 Time 为友元类 public: // ... }; class Time { int hr, min, sec; public: // ... }; ``` 2. 友元函数:非类成员的友元函数可以直接访问声明它的类的私有和受保护成员。 ```cpp void display(const Date &dt, const Time &tm); ``` 如果 `display()` 函数需要访问 `Date` 和 `Time` 类的私有数据,可以将它声明为这两个类的友元。 ```cpp class Date { // ... friend void display(const Date&, const Time&); }; class Time { // ... friend void display(const Date&, const Time&); }; ``` 现在 `display()` 函数可以自由地访问 `Date` 和 `Time` 类的私有数据成员,如示例所示: ```cpp void display(const Date &dt, const Time &tm) { cout << dt.mo << "/" << dt.da << "/" << dt.yr << " "; cout << tm.hr << ":" << tm.min << ":" << tm.sec; } ``` 三、匿名对象 匿名对象是在创建时不给它赋予名字的对象。在上述示例中,`CustomDate(123, 89)` 创建了一个匿名 `CustomDate` 对象,然后立即用于初始化 `Date` 对象 `dt`。这种用法在某些场景下是方便的,但需要注意的是,匿名对象的生命周期很短,一旦创建完毕,其作用域仅限于创建它的语句。 总结来说,私有数据成员和友元是C++实现封装和数据安全性的重要机制。私有数据成员确保了数据的内部状态不被外部随意篡改,而友元机制则允许在必要时打破封装,以便类之间可以协同工作。理解并熟练运用这些概念对于通过计算机二级C++考试以及实际编程至关重要。
- 粉丝: 6744
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助