我有一个对象,在最基本的层面上,它看起来像这样:
#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()
自己),这将是非常非常规的事情。
有什么想法吗?