如下程序段:#include <iostream>using namespace std;
class Point{ int x, y;
public: void set(int a, int b) { x = a; y = b; } Point operator+(const Point& d) { Point s; s.set(x + d.x, y + d.y); return s; } friend ostream& operator<<(ostream& o, const Point& d);};inline ostream& operator<<(ostream& o, const Point& d){ return o<<"("<<d.x<<","<<d.y<<")\n";}
int main(){ Point s, t; s.set(2, 5); t.set(3, 1); cout<<s + t; system("pause"); return 0;}
我想问的是,在operator+ 这个成员函数中,为什么可以是用 s.set(x+d.x, y+d.y);来访问d.x,x不是private的吗,既然是private,就只能由类的成员函数或是友元函数来访问,怎么可以用类的对象d来访问x
class Point{ int x, y;
public: void set(int a, int b) { x = a; y = b; } Point operator+(const Point& d) { Point s; s.set(x + d.x, y + d.y); return s; } friend ostream& operator<<(ostream& o, const Point& d);};inline ostream& operator<<(ostream& o, const Point& d){ return o<<"("<<d.x<<","<<d.y<<")\n";}
int main(){ Point s, t; s.set(2, 5); t.set(3, 1); cout<<s + t; system("pause"); return 0;}
我想问的是,在operator+ 这个成员函数中,为什么可以是用 s.set(x+d.x, y+d.y);来访问d.x,x不是private的吗,既然是private,就只能由类的成员函数或是友元函数来访问,怎么可以用类的对象d来访问x


