MST

星途 面试题库

面试题:C++中友元类作用范围的基础分析

在C++中,定义了一个类A,类B是类A的友元类。类A中有一个私有成员变量privateVar。请编写代码展示类B如何访问类A的privateVar,并且说明友元类的作用范围在这种情况下是如何体现的。
35.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class A {
    friend class B;
private:
    int privateVar;
public:
    A(int var) : privateVar(var) {}
};

class B {
public:
    void accessPrivateVar(A& a) {
        std::cout << "Accessed privateVar in class A: " << a.privateVar << std::endl;
    }
};

友元类的作用范围在这种情况下体现为:类B作为类A的友元类,它能够访问类A的私有成员privateVar。但是这种访问权限只针对类B,其他类(非友元类)不能访问类A的privateVar。友元关系是单向且非传递的,即类B能访问类A的私有成员,但类A不能反过来因为B是其友元就访问B的私有成员;并且若类C是类B的友元,类C也不能因为B是A的友元就访问A的私有成员。