📅  最后修改于: 2023-12-03 14:39:59.298000             🧑  作者: Mango
静态函数是一种只能在类内部使用的函数,且该函数只能操作静态成员变量。静态函数可以被类的对象调用,也可以直接通过类来调用。
静态函数使用static
关键字进行声明,并且不需要通过对象来调用。
下面是一个静态函数的例子:
class MyClass {
private:
static int count;
public:
static void printCount() {
cout << "count: " << count << endl;
}
};
int MyClass::count = 0; // 静态成员变量必须在类外部初始化
int main() {
MyClass::printCount(); // 直接通过类来调用静态函数
MyClass c1;
c1.printCount(); // 通过对象调用静态函数
return 0;
}
友元函数是一种能够访问类中私有成员的非成员函数,它不属于类的成员,但是能够访问类的私有成员。友元函数的声明需要在类的内部进行,但是定义需要在类的外部进行。
友元函数使用friend
关键字进行声明,并且需要在类的内部进行声明。
下面是一个友元函数的例子:
class MyClass {
private:
int num;
public:
MyClass(int n) : num(n) {}
friend void printNum(MyClass c); // 友元函数的声明
};
void printNum(MyClass c) {
cout << "num: " << c.num << endl; // 可以访问类中的私有成员
}
int main() {
MyClass c1(10);
printNum(c1); // 友元函数的调用,可以访问类中的私有成员
return 0;
}
静态函数和友元函数有以下几点不同:
static
关键字进行声明,而友元函数使用friend
关键字进行声明。