目前位置: VCer资源中心 >>> VCer论坛 >>> 技术问答

[本帖已阅读1373次 分值2 回复5次] 张贴资源 发回信箱 控制面板

奇怪的private

提供者:barco 张贴时间:2004-05-21 12:31:25.0 出处:vcer.net 作者:不祥

奇怪的private(2004-05-21 12:31:25.0)


巴壳


 
级别: VCer小兵
头衔: VCer会员

经验: 462
作品: 15
分会: 华中分会
注册: 2004-05-13 22:18:24.0
登录: 2004-07-22 21:24:52.0

class Complex                  //Definitiong of class complex

     {

      public:

               Complex(double r=0,double i=0){ mRel = r; mImag = i;}//constructor

               Complex operator +(Complex c);  //Reuse operator '+'

              Complex operator -(Complex c);  //Reuse operator '-'

              void Display();                //Output complex

     private:

              double mRel,mImag;

     };

     Complex Complex::operator +(Complex c)

    {

       //Complex cc;

       //cc.mRel = mRel + c.mRel;

       //cc.mImag = mImag + c.mImag;

      double a = mRel + c.mRel;

      double b = mImag + c.mImag;

      return Complex(a,b);

    }

     Complex Complex::operator -(Complex c)

   {

     Complex cc;

     cc.mRel = mRel - c.mRel;   //why can access private member declared in class 'Complex'*********

     cc.mImag = mImag - c.mImag;

     return Complex(cc.mRel,cc.mImag);

   }

   void Complex::Display()

   {

    cout<<"("<<mRel<<" "<<mImag<<")"<<endl;

   }

   void main()

   {

     Complex c1(5,4),c2(2,10),c3;

     cout<<"c1=";  c1.Display();

     cout<<"c2=";  c2.Display();

     c3 = c1 - c2;

     cout<<"c3=c1-c2=";

    c3.Display();

    c3 = c1 + c2;

    cout<<"c3=c1+c2=";

    c3.Display();

    //cout<<c3.mImag<<endl;   //***********

   }

大家看有**********的两个注释行,问题就在注释行里!!!

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/2252.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]

re:奇怪的private

我已经弄清楚了!有如下结论:

1.凡是在类内部定义的任何方法,对类的私有成员不管是直接访问还是通过对象访问都是可以的,这就是所谓的“封装性”。

2.而在类外部,只能看到类的外部接口 即:public,而其他的东东都看不到,只就是数据的保密性。

barco 于 2004-06-01 23:53:40.0 编辑 [回复该贴]

re:奇怪的private

c++对象能够访问其私有成员的啊!

私有成员不能由别的对象访问,别的对象不能直接修改该对象的私有成员变量或调用该对象的私有成员函数,只能直接访问共有或友好成员变量或成员函数吧

vcnovice 于 2004-06-01 21:08:58.0 编辑 [回复该贴]

re:奇怪的private

偶用dev-C++可以通过,c++中的成员函数可以访问所属类的对象的私有部分~

steel007 于 2004-05-29 21:14:59.0 编辑 [回复该贴]

re:奇怪的private

怎么?不能运行吗?我这能运行啊!

barco 于 2004-05-22 00:00:16.0 编辑 [回复该贴]

re:奇怪的private

E:\Visual Studio Projects\test\Cppe.cpp(84) : error C2248: 'mImag' : cannot access private member declared in class 'Complex'

E:\Visual Studio Projects\test\Cppe.cpp(18) : see declaration of 'mImag'

Error executing cl.exe.

bluejoe 于 2004-05-21 13:23:48.0 编辑 [回复该贴]