答案 0 :(得分:2)
display
应该显示给谁?成为朋友只是意味着,如果您遇到该类的对象,则可以访问其所有内部对象。您可能想要:
void display(const Add &a) {
cout << a.a + a.b;
}
然后您可以使用以下命令在main
中调用它:
display(A);
(请记住,您也需要在类中更改display
的定义!)
答案 1 :(得分:1)
为了更好的解释,friend函数用于从外部访问该类的私有或受保护的属性(没有适当的访问器,该属性不能到达)。可以在
找到更好的解释性答案#include <iostream>
using namespace std;
// forward declaration
class B;
class A {
private:
int numA;
public:
A(): numA(12) { }
// friend function declaration
friend int add(A, B);
};
class B {
private:
int numB;
public:
B(): numB(1) { }
// friend function declaration
friend int add(A , B);
};
// Function add() is the friend function of classes A and B
// that accesses the member variables numA and numB
int add(A objectA, B objectB)
{
return (objectA.numA + objectB.numB);
}
int main()
{
A objectA;
B objectB;
cout<<"Sum: "<< add(objectA, objectB);
return 0;
}
在通常情况下,在类之外添加功能的不应达到numA或numB属性,因为它们是私有的,但由于被声明为friend,因此不会出错。因此,对于您的问题,您应该这样做:
#include<iostream>
using namespace std;
class Add {
private:
int a, b;
/*Declared as private to show the significance of friend otherwise
*it does not make sense*/
public:
void get_data();
friend void display(Add);
}
//And change the display function
void display(Add obj) {
cout << (obj.a + obj.b);
}