问题是这样的:
在CStringZhong定义了一个私有成员变量 m_data,在CStringZhongddd这个函数中为什么other可以访问m_data这个私有成员变量???//.h文件
class CStringZhong  
{
public:
   CStringZhong();
   CStringZhong(const char *str);
   CStringZhongddd(const CStringZhong &other);
   virtual ~CStringZhong();
private:
   char *m_data;
};//.cpp文件
CStringZhong::CStringZhong()
{}CStringZhong::CStringZhong(const char *str)
{
    if(str==NULL)
    {
  m_data = new char[1];
*m_data = '\0';
    }
    else
    {
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data,str);
    }
}CStringZhong::CStringZhongddd(const CStringZhong &other)
{
    int length = strlen(other.m_data);   //为什么other可以访问m_data这个私有成员变量???
    m_data = new char[length+1];
    strcpy(m_data,other.m_data);
}CStringZhong::~CStringZhong()
{
    delete [] m_data;
}

解决方案 »

  1.   

    CStringZhongddd函数是CStringZhong类的公有函数
    而other也是CStringZhong类的变量,怎么不能调用
      

  2.   

    否则:
    无法重载=
    也无法增加copy构造函数
      

  3.   

    我有两点疑问:
    1。CStringZhong::CStringZhongddd(const CStringZhong &other)
     中const CStringZhong &other ;不改变对象的值,这种写法我觉得有点不好
    2。类的私有的对象只能通过成员函数或者其他的一些手段来访问,在这里
      可以引用other.m_data? 就算是类型是CStringZhong也不行啊?为什么没有错,难道真是
       c++的规定?