本文介绍了的eC(Ecere)如何不担心类的私有数据域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在暴露的C ++(或Java)文库的接口,人们必须提供类的私人字段,这是understable,因为编译器需要知道类的结构中,为了能够来计算,例如,的sizeof()
但是,为什么这是需要怎么可能得到缓解?因为,对我来说,它出现在封装概念违约:为什么用户要担心或有权访问被认为是私人的东西。
的一个解决方案是定义为每个对象的尺寸()函数,但是这将是在运行时的负担。
不过,一种语言(EC / ecere)声称,[1]:
库开发者不需要担心类定义的私有内容由最终用户,只是什么声明为public将可见被视为
这怎么欧共体实现,怎么可能类似于Java或C来实现++?
[1]
解决方案
仅仅因为程序员或编译器可以看到一个私人的类型,并不意味着它违反了封装。考虑封装为一个合同(你不应该使用它,但你仍然可以看到它)。
... ...但是...
在回答你的问题,如果你真的想躲底层重新presentation,是使用不透明的指针:
下面是在C ++中的例子:
// in the header
class Foo
{
public:
Foo();
~Foo();
private:
struct Pimpl; // forward declaration to internal structure
Pimpl* m; // opaque pointer to actual data
};
// in the cpp file
struct Foo::Pimpl
{
std::string name;
};
Foo::Foo()
: m( new Pimpl)
{
}
Foo::~Foo()
{
delete m;
}
这篇关于的eC(Ecere)如何不担心类的私有数据域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!