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