下面的代码显示了一个简单的运算符重载+
到类Person。根据对象的重载,我在运算符重载中访问p.id
时会出错。为什么我没有得到它?
#include <iostream>
#include <vector>
using namespace std;
namespace friendDemo {
class Person {
private:
int id;
public:
int operator+(const Person& p);
Person(int id);
};
int Person::operator+(const Person& p) {
// accessing the private member
cout << p.id << endl;
return p.id + id;
}
Person::Person(int id) : id(id) {
cout << "Created" << endl;
}
void test() {
Person p1 {1};
Person p2 {2};
cout << "p1 + p2 = " << (p1 + p2) << endl;
}
};
int main() {
friendDemo::test();
return 0;
}
输出:
Created
Created
p1 + p2 = 2
3
我是否正在进行适当的运算符重载?根据文字,我应该使用友元功能访问私人会员,但他的代码是有线的(没有朋友访问私人会员)