访问私有变量疑问的解决

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 zijinshi 的 blog

    “呵呵,你说得没错,访问权限是应该对class控制还是应该对object控制 在各个语言里不尽相同,但c++选择了class。 
    既然这样,那么“cmystring a_cother的变量m_pcdata明明是私有的”说得就不对了,应该理解为m_pcdata对非cmystring(继承这里先不谈)而言是私有的,而不能理解为m_pcdata对非a_cother而言是私有的。”
    周星星(http://blog.vckbase.com/bruceteen)在给我的上一篇疑问中作了这样的解答。

    按照他的意思,应该是对于相同类的不同对象obja和objb,他们应该是可以互相访问对方的私有变量的。
    我做了这样的尝试。
    新建一个类
class ctest 
{
public:
        void setvalue(int a_ivalue);
        int getvalue();
        void setvalue(ctest a_ctest);
        ctest(int a_ivalue = 0);
        virtual ~ctest();

private:
        int m_itest;
};

各个函数的实现如下:
ctest::ctest(int a_ivalue)
{
    m_itest = a_ivalue;
}

ctest::~ctest()
{
       
}

void ctest::setvalue(ctest &a_ctest)
{
    m_itest = a_ctest.m_itest;
    a_ctest.m_itest = -1;
}

int ctest::getvalue()
{
     return m_itest;
}

void ctest::setvalue(int a_ivalue)
{
    m_itest = a_ivalue;
}

    如果他说话是对的话,那么下面一段程序
       
        int itmp = 1;
        ctest clstest1(itmp);
        ctest clstest2;
        clstest2.setvalue(clstest1);
    不仅可以运行,而且最后的结果应该是
clstest1.m_itest == -1;
clstest2.m_itest == 2;

    运行结果果真如此。

    周星星(http://blog.vckbase.com/bruceteen)的话是对的:访问权限是应该对class控制还是应该对object控制 在各个语言里不尽相同,但c++选择了class。
    看来我对很多东西还是不懂,呵呵,长路漫漫,吾将上下求索……

本文关键:访问私有变量疑问的解决
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top