4

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

#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()应该如何。

这个较老的问题,如果成员函数影响逻辑状态而不是按位状态,它们应该是“const”吗?,给我的印象是,由于我的方法(本身)不会影响对象的逻辑或按位状态,因此const是要走的路。

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

有什么想法吗?

4

1 回答 1

1

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

对于对象或函数是只读的明确情况,我保留使用 const。

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

于 2012-07-04T23:03:49.413 回答