0

所以我试图学习如何使用朋友类来改变私有类成员的值,但是朋友类不能改变主类的值,这是我所做的代码,我是编码世界的新手,请帮帮我:)

#include <iostream>
using namespace std;

class A {
private:
    int marks;
    
    public:
    show_marks()
    {
        cout <<marks;
    }
    set_marks( int num )
    {
        marks =num;
    }
    
    
    friend class B;

};
class B{

    public:
    
    show_A_marks(A teacher, int num){
    teacher.marks= num;
    }
};
int main(){
    A teacher;
    teacher.set_marks(10);
     teacher.show_marks();

     cout <<endl;
     
     B student;
     student.show_A_marks(teacher,20);
     teacher.show_marks();
}

- 这应该打印:10 20 但正在打印:10 10

4

1 回答 1

2

在函数中:

show_A_marks(A teacher, int num)

你是teacher按价值传递的。您正在制作该值的副本,并编辑该副本。当函数返回时,副本就消失了。您需要通过引用传递它:

show_A_marks(A& teacher, int num)
//            ^ reference to A

请参阅按引用传递与按值传递有什么区别?了解更多信息。

于 2021-10-21T22:35:51.433 回答