温馨提示×

C++中成员函数和友元函数的使用及区别详解

c++
小云
132
2023-08-16 12:42:52
栏目: 编程语言

成员函数和友元函数是C++中用来访问和操作类的成员的两种不同的方式。

成员函数:

成员函数是定义在类内部的函数,它可以直接访问类的私有成员。成员函数可以通过对象或者指针来调用。

例如:

class MyClass {
private:
int x;
public:
void setX(int value) {
x = value;
}
int getX() {
return x;
}
};

在上面的例子中,setX和getX都是成员函数,它们可以直接访问类的私有成员x。通过创建一个对象或者指针来调用这些成员函数,可以对x进行赋值和读取操作。

MyClass obj;
obj.setX(5);
int value = obj.getX();

友元函数:

友元函数是定义在类外部的函数,它可以访问类的私有成员。友元函数要在类内部进行声明,并在类外部进行定义。友元函数可以通过对象或者指针来调用。

例如:

class MyClass {
private:
int x;
public:
void setX(int value) {
x = value;
}
friend void printX(MyClass obj); // 友元函数的声明
};
void printX(MyClass obj) { // 友元函数的定义
cout << obj.x << endl; // 可以直接访问类的私有成员x
}

在上面的例子中,printX是一个友元函数,它可以直接访问类的私有成员x。通过创建一个对象或者指针来调用这个友元函数,可以打印出x的值。

MyClass obj;
obj.setX(5);
printX(obj);

区别:

  1. 成员函数是类的成员,它可以直接访问类的私有成员,而友元函数不是类的成员,它需要在类内部进行声明并在类外部进行定义才能访问类的私有成员。

  2. 成员函数可以通过对象或者指针来调用,而友元函数也可以通过对象或者指针来调用。

  3. 成员函数可以被继承,而友元函数不可以被继承。

  4. 成员函数在编译时会进行类型检查,而友元函数不会进行类型检查。

0