本文介绍了的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)如何不担心类的私有数据域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-21 15:21