私有成员能够从外部访问,求原因
代码如下:
class String
{
public:
String(const char* str = NULL);
String(const String& other);
~String(void);
private:
char* m_str;
};
//... ...
//拷贝构造函数中
String::String(const String& other)
{
//下面两句中, other的私有成员m_str被直接访问,并且是允许的.求原因
m_str = new char[strlen(other.m_str) + 1];
strcpy(m_str, other.m_str );
}
[解决办法]
//下面两句中, other的私有成员m_str被直接访问,并且是允许的.求原因
================================================================
类域概念,其间private成员可以直接访问,类域 = 类定义 + 成员函数实现
[解决办法]
没原因,类的成员函数可以访问本类所有对象的私有数据,规定!
[解决办法]
类定义时的成员函数的作用域也在整个类之中,对于成员函数可以访问private数据成员
[解决办法]
#include <iostream>
using namespace std;
class Number;
class String
{
public:
String(const char* str = NULL);
String(const Number& other);
String()
{
}
~String(void)
{
delete m_str;
}
void Show();
friend class Number; //友元
private:
char* m_str;
};
String::String(const Number& other)
{
}
class Number
{
public:
void Show(const String& other);
String m_a;
};
void Number::Show(const String& other)
{
cout < <other.m_str < <endl; //可以
cout < <m_a.m_str; //可以
}
int main()
{
return 0;
}
友员都可以访问自己的private 更何况自己呢, 那不是比友元还亲....
试着这样理解..