MST

星途 面试题库

面试题:C++中通过友元函数访问类非公有成员的实现

请编写一个C++程序,定义一个类,其中包含私有成员变量,然后通过友元函数来访问该私有成员变量并输出其值。要求详细说明友元函数的声明和定义位置,以及如何在主函数中调用该友元函数。
26.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

// 定义类
class MyClass {
private:
    int privateVariable; // 私有成员变量
public:
    MyClass(int value) : privateVariable(value) {} // 构造函数
    // 友元函数声明在类内部
    friend void printPrivateVariable(MyClass obj); 
};

// 友元函数定义在类外部
void printPrivateVariable(MyClass obj) {
    std::cout << "The value of privateVariable is: " << obj.privateVariable << std::endl;
}

int main() {
    MyClass myObj(42); // 创建类的对象
    // 在主函数中调用友元函数
    printPrivateVariable(myObj); 
    return 0;
}
  1. 友元函数声明:在MyClass类内部进行声明friend void printPrivateVariable(MyClass obj); ,通过friend关键字声明printPrivateVariable函数为MyClass类的友元函数,使其可以访问MyClass类的私有成员变量。
  2. 友元函数定义:在MyClass类外部进行定义,函数体中可以直接访问MyClass对象的私有成员变量privateVariable
  3. 主函数调用:在main函数中,首先创建MyClass类的对象myObj ,然后直接调用友元函数printPrivateVariable并传入myObj对象,从而输出私有成员变量的值。