📅  最后修改于: 2023-12-03 15:14:02.022000             🧑  作者: Mango
在C++中,我们可以使用友元函数和成员函数访问类中的私有成员变量和私有成员函数。但是这两种方法有一些区别。
友元函数是一种定义在类外部的普通函数,但是它可以访问类中的私有成员变量和私有成员函数。我们可以使用关键字friend
将其声明为类的友元函数。
下面是一个示例:
class MyClass
{
private:
int myVar;
public:
friend void myFriend(MyClass& obj);
};
void myFriend(MyClass& obj)
{
obj.myVar = 42;
}
在上面的代码中,我们声明了一个MyClass
类,并且声明了一个myFriend
函数作为它的友元函数。myFriend
函数可以访问MyClass
中的私有变量myVar
。
需要注意的是,友元函数并不是类的成员函数,所以它没有this指针。因此,我们需要将MyClass
对象作为参数传递给myFriend
函数来访问私有成员变量。
成员函数是定义在类内部的函数,它可以直接访问类中的成员变量和成员函数。它们也可以访问私有成员变量和私有成员函数。
下面是一个示例:
class MyClass
{
private:
int myVar;
public:
void setMyVar(int val)
{
myVar = val;
}
int getMyVar()
{
return myVar;
}
};
在上面的代码中,我们定义了一个setMyVar
函数和一个getMyVar
函数。setMyVar
函数用来设置私有成员变量myVar
的值,而getMyVar
函数用来获取私有成员变量myVar
的值。
需要注意的是,成员函数是类的一部分,它们可以直接访问类的成员变量和成员函数。
友元函数和成员函数都可以访问私有成员变量和私有成员函数。但是,它们之间存在一些区别:
因此,在设计类的时候,需要根据实际情况来选择使用友元函数还是成员函数,以实现最好的封装和代码可读性。