내가 가장 기본적인 수준에서,이처럼 보이는 물체가 : 내가 x_link::display_ptr()
이 경우에 어떻게해야 "CONST"궁금C++ 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_;
};
을 이렇게.
이 이전 질문 인 Should member functions be “const” if they affect logical state, but not bitwise state?은 내 방법이 객체의 논리 또는 비트 상태에 영향을 미치지 않으므로 (const
)가는 길이라는 인상을줍니다.
을 제공하지만 동시에 Display*
을 제공하면 사용자가 객체를 깨뜨릴 수 있습니다 (예 : XCloseDisplay()
). 매우 비 const 일 수 있습니다.
의견이 있으십니까?
왜 개인 포인터에 대한 액세스 권한을 제공합니까? –
은 수명이 짧고 Xlib가 큽니다. 이 객체 내에서 Xlib의 모든 부분에 대한 인터페이스를 제공하지 않는 한 (가능하지만 크고 특수한 객체를 의미 함) 다른 코드는 해당 포인터에 대한 액세스가 필요합니다. – tecu
이것은 간단한 RAII 스타일 사용처럼 보입니다. 'std :: shared_ptr' (또는'boost :: shared_ptr')을 커스텀 Deleter와 함께 사용하지 않는 이유는 무엇입니까? 복사 생성자 및 할당 작업과 같은 것을 얻을 수 있도록 도와줍니다. –