c C包装器的成员函数的常量
发布时间:2020-12-16 07:00:35 所属栏目:百科 来源:网络整理
导读:我有一个对象,在最基本的层面上,看起来像这样: #include X11/Xlib.hclass x_link { public: x_link() { display_ = XOpenDisplay(NULL); } ~x_link() { XCloseDisplay(display_); } Display* display_ptr() const { return display_; } private: Display* d
我有一个对象,在最基本的层面上,看起来像这样:
#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是要走的路. 但与此同时,提供Display *允许用户打破对象(例如,通过调用XCloseDisplay()本身),这将是一个非常非常常的事情. 有什么想法吗? 解决方法
这个类看起来像一个简单的包装类,其目的主要是包装C接口.在这种情况下,我建议你不要使用const来使你的程序复杂化.
我保留使用const作为对象或函数是只读的明确切割情况. Const是许多C功能中的一个,它经常欺骗程序员使程序不必要地复杂化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |