C++中巧用#define访问类的私有成员
2007-10-02 19:53
281 查看
我们知道,类的私有成员在类的外部是不能被访问的。
例如有下面的这个简单的类:
class ClxECS
{
private:
int iPrivate;
};
那么下面的这个函数是不能通过编译的:
void ECS_test()
{
ClxECS lx;
lx.iPrivate = 13;
cout << lx.iPrivate << endl;
}
但是,我们并不是没有办法来访问类的私有成员。
其实,方法很简单,只要在类的声明前面加上如下一行代码就行了:
#define private public
同样的,这个方法对保护成员也适用:
#define protected public
但是,这是一个非正规的手段,它将破坏类的所有封装性。而C++中的#define的存在也是为了跟C兼容。所以只有在非常特殊的情况下,才会用这种非正规方法访问类的私有或保护成员。
例如有下面的这个简单的类:
class ClxECS
{
private:
int iPrivate;
};
那么下面的这个函数是不能通过编译的:
void ECS_test()
{
ClxECS lx;
lx.iPrivate = 13;
cout << lx.iPrivate << endl;
}
但是,我们并不是没有办法来访问类的私有成员。
其实,方法很简单,只要在类的声明前面加上如下一行代码就行了:
#define private public
同样的,这个方法对保护成员也适用:
#define protected public
但是,这是一个非正规的手段,它将破坏类的所有封装性。而C++中的#define的存在也是为了跟C兼容。所以只有在非常特殊的情况下,才会用这种非正规方法访问类的私有或保护成员。
相关文章推荐
- C++中巧用#define访问类的私有成员
- C++中巧用#define访问类的私有成员
- C++中巧用#define访问类的私有成员
- C++利用指针突破私有成员访问限制
- C++为什么类的成员函数中(复制构造函数,赋值操作符等)可以有貌似类的对象访问类的私有成员的用法?
- C++中类的访问权限针对的是类而不是对象!(为什么类中的函数可以访问对象的私有成员?)
- C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
- C++ 突破私有成员访问限制
- c++中类对象不能访问类的私有成员变量
- C++本类可以访问本身类的私有成员(即拷贝构造函数可以访问本身对象的私有成员)
- 如何强制访问c++私有成员
- C++中内部类访问外部类的私有成员
- C++中私有成员和工友成员的访问
- c++中,同个类的不同实例可以相互访问对方的私有、保护成员
- c++中类对象不能访问类的私有成员…
- C++私有成员访问
- 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
- 如何强制访问c++私有成员
- c++ 友元函数 还是不能访问私有成员。。 http://zhidao.baidu.com/link?url=Ccm5gZvOc733A_YsS2kj-LZsVtdwu6BT3WR97u66jZAZ1
- C++中访问类的私有数据成员的第三种方法