C++类的友元函数与指向成员的指针
需积分: 35 50 浏览量
更新于2024-08-24
收藏 1.05MB PPT 举报
"指向类成员的指针及友元函数-C++编程概念"
在C++中,类的成员包括数据成员和成员函数。有时我们需要直接通过指针来操作这些成员,这时就需要使用到指向类成员的指针。这种特殊类型的指针能够指向类中的数据成员或成员函数,提供了一种灵活的访问方式。
1. 指向类中数据成员的指针变量
定义一个指向类中数据成员的指针变量,其语法如下:
```cpp
<类型> 类名::* 指针变量名;
```
这里的`类型`是指针所指向的数据成员的类型,而`类名`是包含这个数据成员的类的名称。例如,如果有一个名为`Person`的类,它有一个`int`类型的成员`age`,那么我们可以这样定义一个指向`age`的指针变量:
```cpp
int Person::* ptrToAge;
```
然后,我们可以通过对象和指针来访问数据成员,例如:
```cpp
Person p;
p.age = 30; // 直接访问
*(ptrToAge = &p.age) = 30; // 通过指针访问
```
2. 友元函数
C++中的友元机制是为了打破封装性,允许非成员函数访问类的私有和保护成员。友元函数是一种不在类的成员列表内的函数,但它被声明为某个类的友元,从而具有访问该类私有和保护成员的权限。
友元函数的声明通常在类的定义内部,使用`friend`关键字,如下所示:
```cpp
class MyClass {
private:
int myData;
public:
MyClass(int data): myData(data) {}
friend int accessPrivate(MyClass& obj); // 声明友元函数
};
int accessPrivate(MyClass& obj) {
return obj.myData; // 友元函数可以直接访问myData
}
```
友元函数与普通函数的主要区别在于:
- 友元函数不是类的成员,不具有`this`指针,因此需要通过对象或对象引用作为参数来访问成员。
- 友元函数可以在类的内部声明,但其定义可以放在类的外部。
- 友元函数可以访问类的所有成员,无论它们的访问级别如何,而普通函数只能访问公有成员。
在使用友元函数时要注意,虽然它们提供了便利,但过度使用会破坏类的封装性,可能影响代码的维护性和安全性。因此,应谨慎地使用友元机制,仅在确实需要时才引入友元函数。
2011-08-17 上传
2009-06-05 上传
2010-10-13 上传
2010-03-17 上传
2010-09-04 上传
2023-03-19 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
慕栗子
- 粉丝: 20
- 资源: 2万+
最新资源
- 使用 FDM 求解二维波动方程:具有 4 种可视化:颜色图、表面、折射、反射-matlab开发
- date,java编程思想源码,java实现定制二维码附
- Creed Search-crx插件
- goprotest:对于希望创造积极变化的人们,世界现在需要
- Budget-Tracker
- Unity中使用Ultraleap的Slider组件.zip
- marcurbi.github.io:我的摄影作品集
- Learning-Linux:Linux万物的次要来源和便捷目录
- ansible-role-transmission-daemon:DebianUbuntu系统上传输守护程序的完全可配置Ansible角色
- datepicker:用 JavaScript 约会! 一个没有依赖关系的日期选择器
- full,java线程池源码,java微商城开发源码下载
- gui4sher
- THE-WORLD-IS-OUR-CANVAS-PART-3
- hexcord-website:Hexcord网站
- covid-relief-bill-dollar-amounts:尝试提取COVID救济法案中提及的每一美元金额,请阅读自述文件
- 布里吉塔