说明:同一类,不同对象可访问各自的私有项,但前提是访问的语句必须在类内。
#include<iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex _add(Complex &);
void display();
// void show(Complex &);
private:
double real;
double imag;
};
/*void Complex::show(Complex &x)
{
cout<<"("<<x.real<<","<<x.imag<<")"<<endl;
}*/
Complex Complex::_add(Complex &c2)
{
Complex c;
c.real=this->real+c2.real;
c.imag=this->imag+c2.imag;
return c;
}
void Complex::display(){cout<<"("<<real<<","<<imag<<")"<<endl;}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1._add(c2);
// c2.show(c1);
cout<<"c1=";c1.display();
cout<<"c2=";c2.display();
cout<<"c1+c2=";c3.display();
return 0;
}
运行结果如下:
这里其实已经实现了对同类不同对象的访问,即add函数是从c1调用的,但是访问了c2的私有项。
如果去掉注释符,则结果如下,这是进一步印证,其实用不着印证,因为拷贝构造函数,就是这个道理。