C ++包装器的成员函数的c ++ const

时间:2012-07-04 22:35:29

标签: c++ class const

我有一个对象,在最基本的层面上,看起来像这样:

#include <X11/Xlib.h>

class x_link {
    public:
        x_link()
        {
            display_ = XOpenDisplay(NULL);
        }

        ~x_link()
        {
            XCloseDisplay(display_);
        }

        Display* display_ptr() const
        {
            return display_;
        }

    private:
        Display* display_;
};

我想知道“const”x_link::display_ptr()在这种情况下应该是怎样的。

这个较早的问题Should member functions be “const” if they affect logical state, but not bitwise state?给我的印象是,由于我的方法不会(本身)影响对象的逻辑或按位状态,因此const是可行的方法。< / p>

但与此同时,提供Display*允许用户打破对象(例如,通过自己调用XCloseDisplay()),这将是一个非常非常常的事情。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这个类看起来像一个简单的包装类,其目的主要是包装C接口。在这种情况下,我建议你不要使用const来使你的程序复杂化。

我保留使用const作为对象或函数是只读的明确切割情况。

Const是许多C ++特性之一,它经常欺骗程序员使他们的程序不必要地复杂化。