加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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功能中的一个,它经常欺骗程序员使程序不必要地复杂化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读