在C++中,友元類和靜態(tài)成員是兩個不同的概念,但它們之間存在一定的關(guān)系
示例:
class A {
private:
int x;
public:
A(int a) : x(a) {}
friend class B; // 類B是類A的友元類
};
class B {
public:
void printX(const A& obj) {
std::cout << "x = " << obj.x << std::endl;
}
};
static
。靜態(tài)成員可以通過類名直接訪問,而不需要創(chuàng)建類的實(shí)例。示例:
class A {
public:
static int x; // 靜態(tài)數(shù)據(jù)成員
static void printX() { // 靜態(tài)成員函數(shù)
std::cout << "x = "<< x << std::endl;
}
};
int A::x = 0; // 初始化靜態(tài)數(shù)據(jù)成員
int main() {
A::printX(); // 通過類名訪問靜態(tài)成員函數(shù)
return 0;
}
關(guān)系: 友元類和靜態(tài)成員之間沒有直接的關(guān)系。但是,一個類可以同時(shí)具有友元類和靜態(tài)成員。例如,在上面的示例中,類A具有靜態(tài)數(shù)據(jù)成員x和靜態(tài)成員函數(shù)printX(),同時(shí)類B是類A的友元類,可以訪問類A的所有成員。
總結(jié):