从C++中的类外部修改类的成员可以通过友元函数或者友元类来实现。
friend
声明的非成员函数,它可以访问类的私有成员和保护成员。在类的声明中,将需要访问类的私有成员或保护成员的函数声明为友元函数。友元函数可以在类外部定义,但是在定义时需要在函数名前加上类名和作用域解析运算符::
。示例代码:
class MyClass {
private:
int privateMember;
public:
friend void modifyPrivateMember(MyClass& obj, int value);
};
void modifyPrivateMember(MyClass& obj, int value) {
obj.privateMember = value;
}
friend
声明的另一个类,它可以访问类的私有成员和保护成员。在类的声明中,将需要访问类的私有成员或保护成员的类声明为友元类。示例代码:
class MyClass {
private:
int privateMember;
public:
friend class FriendClass;
};
class FriendClass {
public:
void modifyPrivateMember(MyClass& obj, int value) {
obj.privateMember = value;
}
};
友元函数和友元类的使用可以在某些特定情况下提供方便,但应该谨慎使用,因为它们破坏了封装性,增加了类的耦合性。在设计类时,应该尽量遵循封装的原则,只暴露必要的接口给外部使用,而不是直接修改类的成员。
云+社区技术沙龙[第17期]
腾讯技术开放日
云+社区技术沙龙[第3期]
第五届Techo TVP开发者峰会
开箱吧腾讯云
GAME-TECH
第四期Techo TVP开发者峰会
GAME-TECH
Elastic 中国开发者大会
腾讯位置服务技术沙龙
领取专属 10元无门槛券
手把手带您无忧上云