问题是这样的:
在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;
}
在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;
}
而other也是CStringZhong类的变量,怎么不能调用
无法重载=
也无法增加copy构造函数
1。CStringZhong::CStringZhongddd(const CStringZhong &other)
中const CStringZhong &other ;不改变对象的值,这种写法我觉得有点不好
2。类的私有的对象只能通过成员函数或者其他的一些手段来访问,在这里
可以引用other.m_data? 就算是类型是CStringZhong也不行啊?为什么没有错,难道真是
c++的规定?