首页 > 文章列表 > C++ 静态函数与友元函数有什么区别?

C++ 静态函数与友元函数有什么区别?

静态函数 友元函数
150 2024-04-23

静态函数是类方法,只访问静态成员而不接收 this 指针;友元函数不属于类,可以访问所有成员并接收 this 指针。

C++ 静态函数与友元函数有什么区别?

C++ 中静态函数与友元函数的区别

静态函数

  • 属于类但并不属于任何特定的对象,也可以称为类方法。
  • 使用 static 关键字声明。
  • 只可以访问类的静态成员。
  • 不会接收 this 指针。

友元函数

  • 不属于任何类。
  • 使用 friend 关键字声明。
  • 可以访问类的所有成员,包括私有成员。
  • 可以接收 this 指针。

表格总结

特征静态函数友元函数
类成员资格不是
访问权限类静态成员类所有成员
this 指针不接收可以接收
声明方式static 关键字friend 关键字

实战案例

静态函数示例: 计算圆的面积

class Circle {
public:
    static double calculateArea(double radius) {
        return 3.14 * radius * radius;
    }
};

int main() {
    double radius = 5.0;
    double area = Circle::calculateArea(radius);
    cout << "圆的面积:" << area << endl;
    return 0;
}

友元函数示例: 打印私有成员的值

class Student {
private:
    int age;

public:
    friend void printAge(Student& student);
};

void printAge(Student& student) {
    cout << "年龄:" << student.age << endl;
}

int main() {
    Student student;
    student.age = 20;
    printAge(student);
    return 0;
}