如果我有这样的课,
class Sample
{
private:
int X;
};
然后我们不能从外部访问 X,所以这是非法的,
Sample s;
s.X = 10; // error - private access
但是我们可以在不编辑类的情况下使其可访问!我们需要做的就是这个,
#define private public //note this define!
class Sample
{
private:
int X;
};
//outside code
Sample s;
s.X = 10; //no error!
ideone 的工作代码:http ://www.ideone.com/FaGpZ
这意味着,我们可以通过在类定义之前或之前定义此类宏来更改访问说明符#include <headerfile.h>
,
#define public private //make public private
//or
#define protected private //make protected private
//or
#define so on
这不是 C++(宏/访问说明符/其他)的问题吗?
无论如何,这个话题的重点是:
使用宏,我们很容易违反封装。访问说明符并非万无一失!我对吗?