访问私有变量疑问的解决

类别:编程语言 点击:0 评论:0 推荐:

    “呵呵,你说得没错,访问权限是应该对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。
    看来我对很多东西还是不懂,呵呵,长路漫漫,吾将上下求索……

本文地址:http://com.8s8s.com/it/it27217.htm