gpt4 book ai didi

C 包装器的成员函数的 c++ const-ness

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:10 27 4
gpt4 key购买 nike

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

#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 接口(interface)。在那种情况下,我建议您根本不要使用 const 来使您的程序复杂化。

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

Const 是许多 C++ 功能之一,这些功能经常欺骗程序员使他们的程序不必要地复杂化。

关于C 包装器的成员函数的 c++ const-ness,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11336055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com